Bootstrap

python输入一个整数、输出该整数的所有素数因子_一个正整数的所有质数因子 原创

质数(素数):公因子只有两个值,一个是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);

}

}

;