题解 | #质数因子#
质数因子
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();
}
}
