注册 登录
编程论坛 C图形专区

一个完数的题,谁能写一个代码,并注释一下,谢谢啦

满天星光 发布于 2016-12-12 08:49, 1477 次点击
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。
intput:N
output:
6 its factors are 1 2 3
28 its factors are 1 2 4 7 14
496 its factors are 1 2 4 8 16 31 62 124 248
1 回复
#2
九转星河2016-12-18 04:44
C论坛闲得无聊,第一次光临(可以说是第二次了)图形专区~无聊看看有什么可以回的~

题目的N没有说明是什么东西,可能是求单个数N,也可能是小于等于N的所有数,我只是把其中一个数作为比较~

解释写不了太多,先凑合来看~

程序代码:
#include<stdio.h>
int fun(int n,int a[])//n为所求数据
{
    int i=2,k=1,j=1;//i从2开始//k为求和//j为记录数组下标

    if (n==1)//考虑特殊情况
        return 0;

    for (;i<=n/2;i++)//比较到n/2就行了~
        if (n%i==0)
        {
            k+=i;//求和
            a[j++]=i;// 保存数据
        }
   
    return k;
}
int main()
{
    int n,a[1000]={0};//保存完数的数组
    a[0]=1;

    scanf("%d",&n);//输入数据

    if (n==fun(n,a))//
    {
        printf("Yes,its factors are:\n");
        for (n=0;a[n];++n)
            printf("%d ",a[n]);
    }
    else
        printf("No");

    printf("\n");

    return 0;
}
1