HJ6 质数因子

答案:

// 注意类名必须为 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);
    }
}
posted @ 2024-04-30 07:48  xfcoding  阅读(5)  评论(0编辑  收藏  举报