题解 | #质数因子#
质数因子
http://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
// 方法一:
// 一个正整数最多有一个质因子大于其平方根,取平方根即可
for (int i = 2; i * i <= num; i++) {
while (num % i == 0) { //
// 由于连续因子的整除,得到的因子就是质数(小的因子都被除掉了,也就去除了非质数的数)
System.out.print(i + " ");
num /= i;
}
}
//循环结束不是1的因子也是质数
System.out.print(num == 1 ? "" : num);
// 方法二: 上面相同逻辑改递归
// getNum(num, 2);
}
static void getNum(int num, int start) {
if (start * start > num) {
System.out.print(num == 1 ? "" : num);
return;
}
if (num % start == 0) {
System.out.print(start + " ");
num /= start;
getNum(num, start);
} else {
getNum(num, start + 1);
}
}
}
查看12道真题和解析

