用C语言找出1000以内的完数。

自己写了一个C语言找出1000以内的完数的小程序,但是运行结果为6,28,36,496.不知道为什么会有36,不知道错在哪里。求解...inta,m,n,sum,b;a=... 自己写了一个C语言找出1000以内的完数的小程序,但是运行结果为6,28,36,496.
不知道为什么会有36,不知道错在哪里。求解...
int a,m,n,sum,b;

a=2;
double i;
while (a<=1000)
{
sum=0;
i=sqrt(a);
for(m=1;m<=i ;m++)
{

for(n=1;n<=a;n++)
if(n*m==a)
{
b=m+n;
sum=sum+b;
if(sum-a==a)
{
printf("%d是完数!\n",a);
}
}
}
a++;
}
printf("\n");
}
展开
 我来答
幻想家爱休闲
高能答主

2019-06-26 · 分享休闲中的点点滴滴!
幻想家爱休闲
采纳数:1082 获赞数:266369

向TA提问 私信TA
展开全部

用C语言输出1000以内所有的完数步骤如下:

1、首先打开vc6.0,新建一个项目。

2、添加头文件。

3、添加main函数。

4、定义i,j,k,n,sum。

5、定义一个数组。

6、使用第一层for循环。

7、使用第二层for循环,用来求出每位的数字。

8、使用if条件判断语句。

9、运行程序看看结果。

听不清啊
高粉答主

推荐于2018-03-28 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
int a,m,n,sum,b;

a=2;
double i;
while (a<=1000)
{
sum=0;
i=sqrt(a);
for(m=1;m<=i ;m++)
{

for(n=1;n<=a;n++)
if(n*m==a)
{
b=m+n;
sum=sum+b;
if(sum-a==a)
{
printf("%d是完数!\n",a); //这里还没有加完,就认为是完数了 1+36+2+18+3+12=72
}
}
}
a++;
}
printf("\n");
}
你的程序效率太低了。如要算更大范围的要花很多时间。

下面给出我的程序:
#include<math.h>
main()

{
int i,a=2,m,sum;
while (a<=30000)

{
sum=1;
i=sqrt(a);
for(m=2;m<=i;m++)
{
if(a%m==0)
sum+=m+a/m;
if(m*m==a)
sum-=m;
}
if(sum==a)
printf("%d是完数!\n",a);
a++;
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ylf尘风
2013-05-29 · TA获得超过257个赞
知道小有建树答主
回答量:168
采纳率:100%
帮助的人:99.6万
展开全部
#include<stdio.h>
#define N 1000
void main()
{
int k, j, s;
printf("%d内的完数:\n", N);
for (k = 2; k <= N; k++)
{
s = 0;
for (j = 1; j < k; j++)
{
if (k % j == 0) /* 判断是否能被整除,能就相加 */
s = s + j;
}
if (s == k)
printf("%-4d", k);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1024程序员
2020-11-26 · TA获得超过374个赞
知道答主
回答量:457
采纳率:0%
帮助的人:23.5万
展开全部

C语言经典例子之完数求解

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
微俊king
2013-05-29 · TA获得超过576个赞
知道小有建树答主
回答量:626
采纳率:50%
帮助的人:568万
展开全部
int main()
{
int a,m,n,sum,b;

a=2;
double i;
while (a<=1000)
{
sum=0;
i=sqrt(a);
for(m=1;m<=i ;m++)
{

for(n=1;n<=a;n++)
if(n*m==a)
{
b=m+n;
//cout<<b<<" "<<m<<" "<<n<<endl;
sum=sum+b;
}

}
if(sum-a==a)
{
printf("%d是完数!\n",a);
}
a++;
}
printf("\n");
}
你的if位置放错了.
if(sum-a==a)
{
printf("%d是完数!\n",a);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式