C语言求1000内的完数
c语言作业,求完数
注意,1不是完数,因为1是自身的因子,所以要去除。另外这因子不是完全分解,如28分成2,2,7,而是2,4,7,14,不包含自身。
上代码。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define N 100
void judge(int i,int num[]){
int j,cnt = 0;
for(j = 2; j < i; j++){
if(i % j == 0){
num[cnt] = j;
cnt++;
}
}
}
int add(int num[]){
int i = 0;
int res = 0;
while(num[i] != 0)
{
res += num[i];
i++;
}
return res;
}
void clea(int num[]){
int j;
for(j = 0; num[j] != 0; j++){
num[j] = 0;
}
return;
}
int main(void)
{
int i = 2,j;
int num[N+1] = {0};
int res;
for (; i<= 1000; i++,clea(num)){
judge(i,num);
j = 0;
res = add(num);
if (res == i-1){
printf("%d its factors are 1",i);
while (num[j] != 0){
printf(", %d",num[j]);
j++;
}
printf("\n");
}
}
return 0;
}