题解 | #质数因子#

质数因子

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

用例里面有一些超大质数,正常分解遍历完他非常慢会超时

在找最后一个最大质数的时候,这个超大数已经在前面的循环里被除过很多次了

本来我们正常的逻辑是计数器和这个超大数相等了,那他本身就是最后一个质数了

但是对这个超大数来说,就算他还能分解出质数因子,最大的质数因子也不会比他的平方根大!所以当此时还没能分解出因子,这个超大数本身就一定是质数了!

所以我们在最后判断时只要计数器的平方比超大数大即可,可以节省指数级的时间,非常舒服

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Long num = in.nextLong();
        int i = 2;
        while (i <= num) {
            if (num % i == 0) {
                System.out.print(i + " ");
                num /= i;
            } else {
                if (num < i * i) {  //找最后一个质数的条件判断
                    System.out.print(num);
                    break;
                }
                i++;
            }
        }
        in.close();
    }
}
全部评论

相关推荐

01-17 12:35
吉首大学 Java
秋招之BrianGriffin:自己的工作自己做!😡
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务