题解 | 质数因子
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
//不用判断i是不是质数,小质数已经把大合数的因子除干净了,而除2以外的质数都是奇数
Scanner in = new Scanner(System.in);
int n = in.nextInt();
// 先处理2,所有偶数因子
while (n % 2 == 0) {
System.out.print(2 + " ");
n /= 2;
}
// 从3开始,只判断奇数,到sqrt(n)为止
// 既分离出了质数,又判断 n是不是质数
for (int i = 3; i * i <= n; i += 2) {
while (n % i == 0) {
System.out.print(i + " ");
n /= i;
}
}
if (n > 1) { //n本身就是质数
System.out.print(n);
}
}
}
查看58道真题和解析