描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
输入描述:
输入一个整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
示例1
输入:
180
输出:
2 2 3 3 5
import java.util.*;
import java.lang.Math;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int num = in.nextInt();
double k = Math.pow(num,0.5); //之循环到平方根即可
// ArrayList<Integer> prime = new ArrayList<Integer>(); prime.add();
for(int i=2; i<= k;i++){
while( num%i == 0){
System.out.print( i +" ");
num=num/i;
}
}
System.out.println(num ==1?"":num+" " );
}
}
}
为什么只循环到平方根:
6 = 2*3 = 3*2 所以只要判断一半的数就可以了 如果一半的数都没有,说明该数字是个质数
如何找到质数因子:
举例:180
i = 2
180/2 = 90
90/2 = 45
45/2 有余数, i++, i=3
45/3 = 15
15/3 = 5
5/3 有余数,i++, i=4 (4可以被2除尽,如果能被4除尽则一定能被2除尽。又因为该数字不可以被2除尽,所以该数字不可以被4除尽,确保因子是质数)
5/4 有余数,i++, i=5
5/5 =1
质数因子:2 2 3 3 5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)