质数(素数):公因子只有两个值,一个是1,一个是本身这个数。
一个正整数的所有质数因子是什么意思呢?
举个例子:
90 = 2 * 3 * 3 * 5;
20 = 2 * 2 *5;
36 = 2 * 2 * 3 * 3;
9 = 3 * 3;
所以我们要的做的是,输入一个数字,输出包括重复的所有质数因子;
算法步骤:
1、输入的整数n,对最小的一个质数i=2求余;
2、如果得到余数为0,重复执行1;
3、如果得到的商不为0,i++;执行1,2;
4、终止条件为n/=i == i,也就是n除以质数后的值等i这个质因子;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
long num = sc.nextLong();
long k = (long)Math.sqrt(num);// 优化,使得for循环提早结束.
for (long i = 2; i <= k;i++) {
while(num != i) {
if (num % i == 0) {
System.out.print(i + " ");
num =num / i;
} else {
break;
}
}
}
System.out.print(num);
}
}