HJ6 質數因子

xfcoding發表於2024-04-30

答案:

// 注意類名必須為 Main, 不要有任何 package xxx 資訊
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 1 注意題目給的資料範圍,定資料型別
        int num = in.nextInt();

        // 2 一個數的最大因子其實是它的平方根,比如100的最大因子是10,所以不用從2迴圈到100
        double k = Math.sqrt(num);
        // 所以num的因子就在2到k之間
        for (int i = 2; i <= k; i++) {
            // 3 只要num能被i整除,那麼i就是其中一個因子,然後繼續整除,直到不能整除時結束
            while (num % i == 0) {
                System.out.print(i + " ");
                num = num / i;
            }
        }

        // 4 不能整除的數,它就是最後的一個因子了。當然排除1的特殊情況,1沒有質數因子,因為質數本身就大於1
        System.out.println(num == 1 ? "" : num);
    }
}

相關文章