2
1

More than 5 years have passed since last update.

Javaで素因数分解プログラムを書きました

Posted at

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++;
        }
    }

}

内容

  1. while文で入力内容が2未満であるものを弾いて再入力させる。
  2. while文をbreakで脱出し、入力が2以上であるものをif文で判定。
  3. 2から順に割っていき、割り切れたらその数を表示。
  4. xと因数が同値でない(まだ素因数分解できる)ときは*を表示する。
  5. 割り切れない場合はiに1を足してループする。

コメント

21 = 3 * 7 と表示する場合のコードです。
アドバイスいただけると嬉しいです。

2
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1