题解 | 质数因子

质数因子

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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        int num = in.nextInt();
        StringBuilder sb = new StringBuilder();
        // 从2开始,如果能被整除,则直接添加到结果集中
        for(int i = 2; i * i <= num; i++) {		// i * i <= num 是为了优化效率,如果 num 有一个 大于 根号num的因子,那么它一定对应有一个小于根号 num 的因子。从小到大枚举,已经把小于根号 num 的因子排除干净了
            while(num % i == 0) {
                sb.append(i).append(" ");
                num /= i;
            }
        }

        // 如果最后 num 仍然大于 1,说明 num 本身就是一个质数
        if (num > 1) {
            sb.append(num);
        } else{ // 否则移除最后一个空格
            sb.setLength(sb.length() - 1);
        }
        System.out.println(sb.toString());
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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