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);
}
}
}
不知道为什么没有答案输出。。求指导 展开
#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);
}
}
}
不知道为什么没有答案输出。。求指导 展开
4个回答
展开全部
#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.
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.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int s=0;应该放在第一个循环里面,因为从下一个数开始,s应该清0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for(i=2;i<=1000;i++)
{
s = 0;
.................
每次都把s初始为0
{
s = 0;
.................
每次都把s初始为0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询