题解 | 质数因子

质数因子

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

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        long num = in.nextLong();
        getSplit(num);
        Collections.sort(list);
        for (long i : list) {
            System.out.print(i+" ");
        }
    }
    public static List<Long> list = new ArrayList<>();

    public static void getSplit(long n){
        if (n == 1) return;
        if(isPrime(n)){
            list.add(n);
            return;
        }
        for (long i = (long) Math.sqrt(n); i >= 2; i--) {
            if (n % i == 0 && isPrime(i)){
                list.add(i);
                getSplit(n/i);
                break;
            }
        }
    }

    public static boolean isPrime(long n){
        if (n <=2) return true;
        for (int i = 2; i * i <= n; i++) {
            if (n % i == 0) return false;
        }
        return true;
    }
}

#牛客春招刷题训练营#

对于给定的整数 n,从小到大依次输出它的全部质因子。即找到这样的质数 p1,p2,⋯ ,pkp1​,p2​,⋯,pk​ ,使得 n=p1×p2×⋯×pk 。这样的质因子肯定是唯一的,有厉害的大佬能说说为什么不是唯一的,或者是唯一的吗,我是当成唯一的来做,最后一个整数肯定能分成两个质因数的乘积

全部评论

相关推荐

点赞 评论 收藏
分享
03-10 14:19
已编辑
重庆邮电大学 前端工程师
球Offer上岸👑:测试也难求一面 逆天
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务