求1-500之内的所有“完数”。所谓完数就是一个数=各个因子之和。程序清单如下:
public class CompletedNumber{
private static final int COUNT=100;
public static void main(String[ ] args){
System.out.println ("1—500之内的完数 因子");
CompletedNumberTest numObj = new CompletedNumberTest(COUNT);
for(int i=1; i<=500; i++)
numObj.IsCompletedNumber(i);
}
}class CompletedNumberTest{
private static int[] arrOfFactors;
CompletedNumberTest(int count){
arrOfFactors = new int[count];
}
public void IsCompletedNumber(int number){
int countOfFactors=0, numOfFactors=0;
for(int j=1; j<=number/2; j++){
if (number%j==0){
countOfFactors+=j;
arrOfFactors[numOfFactors]=j;
numOfFactors++;
}
}
if (number==countOfFactors){
System.out.println(number+": ");
for(int i=0; i<numOfFactors; i++)
System.out.print(arrOfFactors[i]+',');
}
}}
public class CompletedNumber{
private static final int COUNT=100;
public static void main(String[ ] args){
System.out.println ("1—500之内的完数 因子");
CompletedNumberTest numObj = new CompletedNumberTest(COUNT);
for(int i=1; i<=500; i++)
numObj.IsCompletedNumber(i);
}
}class CompletedNumberTest{
private static int[] arrOfFactors;
CompletedNumberTest(int count){
arrOfFactors = new int[count];
}
public void IsCompletedNumber(int number){
int countOfFactors=0, numOfFactors=0;
for(int j=1; j<=number/2; j++){
if (number%j==0){
countOfFactors+=j;
arrOfFactors[numOfFactors]=j;
numOfFactors++;
}
}
if (number==countOfFactors){
System.out.println(number+": ");
for(int i=0; i<numOfFactors; i++)
System.out.print(arrOfFactors[i]+',');
}
}}
这个地方敲错拉
改为--》System.out.print(arrOfFactors[i]+",");
for(int j=1; j<=number/2; j++)
应该改为:
for(int j=1; (int)j<=number/2; j++){
什么意思,没看出来,j有可能不是整形吗?
for(int j=1; j<=number/2; j++)
应该改为:
for(int j=1; (int)j<=number/2; j++)
-----------------
这里怎么回事啊?