JAVA如何找约数
寻找约数的方法
在Java中,可以通过遍历数字的可能因数来找到其所有约数。约数是指能整除该数字的所有正整数。
遍历法
从1到该数字本身进行遍历,检查每个数字是否能整除目标数字。如果能整除,则该数字是一个约数。
public static void findDivisors(int number) {
System.out.println("约数有:");
for (int i = 1; i <= number; i++) {
if (number % i == 0) {
System.out.print(i + " ");
}
}
}
优化遍历法
由于约数是成对出现的,可以只遍历到该数字的平方根,减少遍历次数。对于每个找到的约数i,同时记录number/i作为另一个约数。
public static void findDivisorsOptimized(int number) {
System.out.println("约数有:");
for (int i = 1; i <= Math.sqrt(number); i++) {
if (number % i == 0) {
if (number / i == i) {
System.out.print(i + " ");
} else {
System.out.print(i + " " + (number / i) + " ");
}
}
}
}
使用集合存储约数
为了确保约数按顺序输出,可以使用集合来存储约数,并在遍历结束后排序输出。
public static void findDivisorsWithSet(int number) {
Set<Integer> divisors = new TreeSet<>();
for (int i = 1; i <= Math.sqrt(number); i++) {
if (number % i == 0) {
divisors.add(i);
divisors.add(number / i);
}
}
System.out.println("约数有:");
for (int divisor : divisors) {
System.out.print(divisor + " ");
}
}
示例调用
public static void main(String[] args) {
int number = 28;
findDivisors(number);
System.out.println();
findDivisorsOptimized(number);
System.out.println();
findDivisorsWithSet(number);
}
输出结果
对于数字28,以上方法的输出均为:

约数有:
1 2 4 7 14 28





