C语言问题,求大神改错,谢谢拉拉拉。。我是小白

因子之和等于它本身的数为完数。如:28的因子是1,2,4,7,14,且1+2+4+7+14=28,则28为完数。求[2,1000]中的完数。#include<stdio.... 因子之和等于它本身的数为完数。如:28的因子是1,2,4,7,14,且1+2+4+7+14=28,则28为完数。求[2,1000]中的完数。

#include<stdio.h>
void main()
{
int s=0;
int i,j,m;
for(i=2;i<=1000;i++)
{
for(j=1;j<i;j++)
{
m=i%j;
if(m==0)
{
s+=j;
}
}
if(s==i)
{
printf("完数有=%d\n",i);
}
}
}
不知道为什么没有答案输出。。求指导
展开
 我来答
phd121212
2013-01-20 · TA获得超过494个赞
知道小有建树答主
回答量:114
采纳率:0%
帮助的人:34.9万
展开全部

#include<stdio.h>

void main()

{int s;

int i,j,m;

for(i=2;i<=1000;i++)

{   s=0;

 for(j=1;j<i;j++)

{m=i%j;

if(m==0)

{s+=j;}}

if(s==i)

{printf("完数有=%d\n",i);

}}}

WestVictoria
2013-01-20
知道答主
回答量:7
采纳率:0%
帮助的人:5.8万
展开全部
#include<stdio.h>
void main()
{
int s=0;
int i,j=2,m;
for(i=2;i<=1000;i++)
{
for(j=1;j<=i/2;j++)
{
m=i%j;
if(m==0)
{
s+=j;

}
}
if(s==i)
{
printf("完数有=%d\n",i);
}
s=0;
}
}

应该是在每次运算完一个i 的时候要把s重新初始化为0,否则s就一直累加,所以会printf不出来吧~(我也研究了半天。。。)

最后算出来是6,28,496.
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱在渝城
2013-01-20 · 超过11用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:19.8万
展开全部
int s=0;应该放在第一个循环里面,因为从下一个数开始,s应该清0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
千江月success
2013-01-20 · TA获得超过827个赞
知道小有建树答主
回答量:1031
采纳率:100%
帮助的人:900万
展开全部
for(i=2;i<=1000;i++)
{
s = 0;
.................
每次都把s初始为0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式