题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
//有点动态规划的感jio,直接遍历从最小的开始,所有的合数都是由质数组成的,那就可以直接把给定的数从最小的
//质数开始除,当遇到能整除的合数时,已经通过前面的所有质给表达出来了。
//但是题目给的是2e9,直接遍历超时,所以当不能被整除时判断下,是不是留下的已经是一个质数了,判断是否是质数不用2e9,也就2e9开平方,这样就避免直接干到超时;
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { //
Long input = in.nextLong();
Long data = input;
int j = 2;
while(data != 1){
for(int i=j;i<=input;i++){
if(data%i == 0){
data/=i;
System.out.print(i+" ");
break;
}
if(isPrimer(data)){
System.out.print(data+" ");
return;
}
j++;
}
}
}
}
public static boolean isPrimer(Long j){
if(j<=1)
return false;
int num = (int)Math.sqrt(j)+1;
for(int i=2;i<=num;i++){
if(j%i == 0)
return false;
}
return true;
}
}


查看9道真题和解析