#Javaで素因数分解
一昨日から本格的にJavaの講義を受けていて、do-while文まで学習したあたりで
素因数分解プログラムを書いてみることになったので、その備忘録です。
(昨日書いた素数判定プログラムを元にしています。)
Soinsu.java
package sample_0306;
import java.util.Scanner;
public class Soinsu {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num;
System.out.println("素因数分解");
while (true) {
System.out.print("2以上の整数を入力してください。:");
num = sc.nextInt();
if (num < 2) {
System.out.println("2よりも小さい整数です。");
} else
break;
}
int x = num;
System.out.print(num + " = ");
for (int i = 2;i <= num;) {
if (x % i == 0) { // 最小の因数を求める
System.out.print(i);
if (x != i)
System.out.print(" * "); // xと因数が同値になったら*の挿入をやめる
x /= i; // 最小の因数で割った数を代入する
} else
i++;
}
}
}
#内容
- while文で入力内容が2未満であるものを弾いて再入力させる。
- while文をbreakで脱出し、入力が2以上であるものをif文で判定。
- 2から順に割っていき、割り切れたらその数を表示。
- xと因数が同値でない(まだ素因数分解できる)ときは*を表示する。
- 割り切れない場合はiに1を足してループする。
#コメント
21 = 3 * 7 と表示する場合のコードです。
アドバイスいただけると嬉しいです。