求1000以内的完数
问题描述
如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。例如6的因子是1,2,3,且6=1+2+3,因此6是完数。编写程序找出1000之内的所有完数。注意1不是完数。
代码
package 算法训练;
public class 求1000以内的完数 {
public static void main(String[] args) {
int[] a = new int[500];//用于存储因子
for(int i=0;i<500;i++) {
a[i]=0;
}
for(int b=1;b<=1000;b++) {
int count=0;
for(int i=2;i<=b/2;i++) {
if(b%i==0) {//表示可以整除
a[count]=i;
count++;
}
}
int sum=0;
for(int j=0;j<count;j++) {
sum+=a[j];
}
if((sum+1)==b) {
if(b!=1) {
System.out.println(b);
continue;
}
}
}
}
}