在Java中查找一个数的所有因子?
“编写一个程序,读取整数I,并按递增顺序显示其所有最小因子。例如,如果输入整数为120,则输出应如下所示:2、2、2、3、5。”。在程序开始时,用户必须输入一个整数,标识将分解多少个数字
import java.util.Scanner;
public class Main {
public static void main(String [] args){
Scanner input = new Scanner(System.in);
int size = input.nextInt();
for(int i = 0; i < size; i++){
int a = input.nextInt();
for(int j = 0; j < a; j++){
if(a%j==0){
System.out.println(j);
}
}
}
input.close();
}
}
# 1 楼答案
试试这个:
# 2 楼答案
求所有因子的更好方法是求出因子的平方根
更有效的方法是使用素数
除了
2
之外,不可能有任何其他的素因子,所以我们可以跳过偶数部分什么是6*k+-1规则
所有素数(2和3除外)都可以用上述公式表示。尽管情况可能并非如此, 考虑6×6 - 1=35除以5。
如果它不是素数,它的素数因子将小于它的平方根
所以我们只检查遵循上述规则的数字
如果数字非常大,而且数量很多,预计算素数可能会很有帮助
我用筛子来计算素数
# 3 楼答案
你应该把数字除以: