用C语言编程找出1000以内的所有完数。(涉及知识点:for语句和if语句)。

一个数如果恰好等于它的因子之和,这个数就称为“完数”。

一个数,所有的真因子(即除了自身以外的约数)的和,恰好等于本身,称为完数。

所以,要确认是否为完数,只要把所有真因子相加判断即可。

于是,这个题目的编程思路为:

1 遍历1~1000;

2 对每个数,判断是否为完数,如是,则输出;

3 程序结束。

代码如下:

#include <stdio.h>
int main()
{
    int n, i, s;
    for(n = 1; n <= 1000; n ++)
    {
        s = 0;
        for(i = 1; i <= n/2; i ++)
            if(n%i == 0) s+= i;//是真因子,累加。
        if(s == n) //是完数。
            printf("%d,",n);//输出。
    }
    
    return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-02
k=0; for(i=0;i<=1000;i++) { int a[]=0; for(j=1;j<=i;j++) if(i%j==0) a[k++]=j; }用手机打符号太麻烦了不写了 我说思路吧 用一个for循环控制从1到1000 再用一个找从1到它本身的完数 用数组存储它的完数 再用一个循环一个个的读取数组中的完数使其相加与数本身比较 相等就输出 这是我的思路或许还有很更简单 你做参考吧
第2个回答  2012-04-02
#include<stdio.h>
int main()
{
int i,j;
int sum=0;
int count=0;
for(i=2;i<1000;i++)//遍历1~1000
{
sum=0;
for(j=1;j<i;j++)
{
if(i%j==0)//判断j是否为i的因子 是的话 对因子求和
sum+=j;
}
if(sum==i)//因子和等于其本身 count+1
{
printf("%d\n",i);
count++;
}
}
printf("共有%d个完数\n",count);
return 0;
}

我自己写的 给分吧
第3个回答  推荐于2016-03-20
#include <stdio.h>
void main()
{
int i,j,k,t,a,c,s,p,sum;
int b[999]={0};
sum=0;s=0;
for(i=0;i<=9;i++)
{ for(j=0;j<=9;j++)
{ for(k=0;k<=9;k++)
{
t=100*i+10*j+k;
if(t==0) continue;
for(a=1;a<t;a++)
{
if(t%a==0) b[a-1]=a;
else b[a-1]=0;
}
for(s=0,c=0;c<=998;c++)
{
if(b[c]>0)
{ s=s+b[c];
}
}
sum=s;
if(t==sum)
{
printf("%d its factors are ",t);
for(p=0;p<t;p++)
{
if(b[p]>0)
printf("%d,",b[p]);
else continue;
}
printf("\n");
}
else continue;
}
}
}
}本回答被提问者采纳
第4个回答  2012-04-02
11111