C语言求1000内的完数

mac2025-06-19  8

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; }
最新回复(0)