c语言小练习提问,考验算法

如果一个数恰好等于它的因子之和,这个数就称为“完数”,例如6的因子为1,2,3,而6=1+2+3,则6为“完数”,编写程序找出1000以内所有完数,并按下面格式输出其因子
6 its factors is 1,2,3


/* Note:Your choice is C IDE */
#include <stdio.h>
void main(){
    
    int i,j;
    int num;//因子之和 
    int m,n;
    int flag = 0;
    for(i=1;i<=1000;i++){
        num = 0;
        //printf("%d的因子如下:",i);
        for(j=2;j<=i;j++){ //j代表i对应的任何一个可能的因子 
            if(i %j == 0){
                num += i/j;  
            }
        }
        //判断因子之和是否和该数相等
        if(num==i){
            printf("%d\n",i);
            flag = 1;
        }     
    }
    printf("\n");
    if(flag == 0){
        printf("No Answer\n");
    }
}

for循环遍历n的所有因子并求和即可。

#include<stdio.h>

int main() {
    int a[1000],s,la,i,j,k;
    for(i = 1; i <= 1000; i++) {
        la = 0;
        s = 0;
        for (j = 1; j < i; j++) {
            if(i % j == 0) {
                a[la++] = j;
                s += j;
            }
        }
        if(s == i) {
            printf("%d its factors is ",i);
            for(k = 0; k < la; k++) {
                printf("%d",a[k]);
                if(k!=la-1){
                    printf(",");
                }else{
                    printf("\n");
                }
            }
        }

    }
}

https://m.educity.cn/souti/4935ED43.html
答案在这,采纳一下哦!谢谢!🙈🙈🙈

#include "stdio.h"
int main()
{
    int n,sum=0,count=0;
    int a[105];
    scanf("%d",&n);
    for(i=1;i<n;i++)
    {
        if(n%i==0)
            {
                a[count++] = i;
                sum+=i;
            }
    }
    if(n==sum)
        {
        printf("%d its factors\n",n);
for (int i = 0; i <count;i++)
{
printf("%d", a[i]);
if (i == count - 1)printf("\n");
else printf(",");
}
        }
    else
        printf("%d 不是完数\n",n);
    return 0;
}

大概意思 自己循环1000内的完数吧 手打代码有点误差