我得到了一个任务来创建一个显示 1 到 100 之间完美整数的程序。这是实际的任务:
创建一个 PerfectIntegers 应用程序,该应用程序显示最大为 100 的所有完美整数。完美整数是一个数字,它等于除自身之外的所有因子之和。例如,6 是一个完美数,因为 1 + 2 + 3 = 6。应用程序应该包含一个布尔方法 isPerfect()。
我试过并想出了这个:
import java.util.ArrayList;
public class PerfectIntegers {
public static boolean isPerfect(int a){
ArrayList<Integer> factors = new ArrayList<Integer>();
int sum=0;
boolean is;
for (int i=1; i<=100; i++){
double r=a/i;
if (r%1==0){
factors.add(i);
}
}for (int i=0;i<factors.size();i++){
sum+=factors.get(i);
}if (sum==a){
is=true;
}else{
is=false;
}return is;
}
public static void getInts(){
for (int i=2; i<=100; i++){
boolean is=isPerfect(i);
if (is!=false){
System.out.print(i+" ");
}
}
}
public static void main(String[] args) {
getInts();
}
}
Eclipse 没有显示任何错误,但是当我尝试运行它时,程序被终止,我什么也得不到。
问题可能出在 上double r
,因为它没有 100% 正确划分时间。