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