题解 | #质数因子#
质数因子
http://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
就是最直接的思路,理解上比较简单,效率可能不是很高:
import java.util.*;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
StringBuilder sb = new StringBuilder();
// 取值到平方根即可
for (int i = 2; i * i <= num; i++) {
// 首先判断是否是因子
while (num % i == 0) {
// 如果2,3符合直接添加
if (i <= 3) {sb.append(i).append(" ");
num /= i;
continue;
}
// 判断是否是质数
boolean isAdd = true;
// 取值到平方根即可
for (int j = 2; j * j <= i; j++) {
if (i % j == 0) {
// 有除了1和本身大小之外的因子,说明不是质数
isAdd = false;break;
}
}
// 是质数就添加
if (isAdd) {sb.append(i).append(" ");
}
num /= i;
}
}
// 循环结束不等于1的因子也是质数,添加
if (num != 1) {
sb.append(num);
}
// 输出结果
System.out.print(sb);
}
}