問題
複数の数値の最小公倍数、最大公約数を求めるプログラムを作成しなさい。
条件:素数2と3までの最小公倍数、最大公約数を求められるロジックとする。
最小公倍数、最大公約数についてどう考えればいいかわからない方は少し考えて
ヒント1を見て、なるべくヒントは見ないで、自力で作成してください。
答えはこちら
ヒント
法則を考える
ロジックを作る際に、数字の法則を知っておく必要があります。
今回は「割り算」と「最大公約数」の関係を知る必要があります。
2つの自然数 a, b について,a を b で割ったときの商を q,余りを r とすると
「a と b の最小公倍数」は,「b と r の最小公倍数」に等しい。
最小公倍数は「割った数字」全てと「商の答え」全てを掛けた数です。
2X2X3X1X2X3 = 72
最大公約数は「商の答え」全てを掛けた数です。
1X2X3 = 6
答えはこちら
答え
答え
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package javalogic; import java.util.Scanner; public class JavaLogic5 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("数字1入力"); int num1 = sc.nextInt(); System.out.println("数字2入力"); int num2 = sc.nextInt(); //最大公約数 int max = 0; //二つの数をiという数で割った時、残りが全て0になる数の中で最も大きい数が最大公約数である。 for(int i=1; i<=num1 && i<=num2; i++) { if(num1%i == 0 && num2%i == 0) { max = i; } } //最小公倍数 int min = (num1*num2)/max; System.out.println("最大公約数: "+max); System.out.println("最小公倍数: "+min); } } |
コメント