题解 | #质数因子#

质数因子

https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int num = in.nextInt();
        int n = num;

        for (int i = 2; i <= Math.sqrt(num) + 1; i++) {
            int tmp = num % i;
            int div = num / i;
            if (tmp == 0) {
                System.out.print(i + " ");
                i = 1; // 实际上是下一次循环还从2开始,因为有i++;
                num = div; // 下一次循环是对除过的数进行判断
                n = div; //保存除过的数,因为有可能为最后一个质数
            }
        }
        if (n != 1) {
            System.out.print(n); //若n不等一1,那么就是本身为质数的数没有被检测到
        }
		// 有空循环,不推荐
        // for (int i = 2; i <= num; i++) {
        //     while (num % i == 0) {
        //         num /= i;
        //         System.out.print(i + " ");
        //     }
        //     if (i <= num && i * i > num) {
        //         System.out.print(num + " ");
        //         break;
        //     }
        // }
	  in.close();
    }
}

全部评论

相关推荐

测试糕手手:社会第一课,随便吹牛逼,直接说四个月,别老实。老实人只会被欺负
点赞 评论 收藏
分享
龙珠传说:nb,公务员解约不需要支付违约金吧
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务