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

一个数如果恰好等于它的因子之和,这个数就称为“完数”。... 一个数如果恰好等于它的因子之和,这个数就称为“完数”。 展开
 我来答
风若远去何人留
推荐于2018-03-21 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450103
专业C/C++软件开发

向TA提问 私信TA
展开全部

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

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

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

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;
}
loveruisky9
2012-04-02 · 超过21用户采纳过TA的回答
知道答主
回答量:99
采纳率:0%
帮助的人:39万
展开全部
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到它本身的完数 用数组存储它的完数 再用一个循环一个个的读取数组中的完数使其相加与数本身比较 相等就输出 这是我的思路或许还有很更简单 你做参考吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ed9ff80
2012-04-02
知道答主
回答量:14
采纳率:0%
帮助的人:11万
展开全部
#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;
}

我自己写的 给分吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
玩转嵌入式
推荐于2016-03-20 · TA获得超过4340个赞
知道大有可为答主
回答量:1160
采纳率:100%
帮助的人:983万
展开全部
#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;
}
}
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luobingli1
2012-04-02
知道答主
回答量:34
采纳率:0%
帮助的人:10.5万
展开全部
11111
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式