求解从1~20000的所有的完数。所有的真因子(即除了自身以外的约数)之和恰好等于本身的数,则成为完数。
比如:第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。
#include<stdio.h>
#include<math.h>
int main(){
int i;
for(i=1;i<=20000;i++){
int num=i,sum=0;
for(int j=1;j<sqrt(num);j++){
if(num%j==0){
sum+=j;
if(j==1) continue;
sum+=(num/j);
}
}
if(sum==num){
printf("%d ",num);
}
}
return 0;
}