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