求 1000以内完全数的和

来源:百度知道 编辑:UC知道 时间:2024/05/07 06:59:34
#include"stdio.h"
main()
{
int i=0,j=0,k=0,sum=0;
printf("the number is:");
for(i=2;i<=1000;i++)
{
for(j=2;j<i;j++)
{if(i%j==0) k=k+j; } /*计算这个输出本身以外所有因数的和*/

if(i==k) /*如果这个数是完全数,则加到累加器中*/
{printf(" %5d",i);}
sum=sum+i;
}

printf("\n sum=%d\n",sum);

}
问一下代码有何问题?
执行后的结果为
the number is:
sum=-23789

#include"stdio.h"
main()
{
int i=0,j=0,k=0,sum=0;
printf("the number is:");
for(i=2;i<=1000;i++)
{
k=0;//这个地方要置0
for(j=2;j<i;j++)
{
if(i%j==0) k=k+j;
} /*计算这个输出本身以外所有因数的和*/

if(i==k) /*如果这个数是完全数,则加到累加器中*/
{
printf(" %5d",i);
}
sum=sum+i;
}

printf("\n sum=%d\n",sum);

}

我的编译器没问题,你换个编译器,或则把sum定义为long型的!!
另外for(j=2;j<i;j++)改成for(j=1;j<=i/2;++j)

看看我的:
———————————————————————————————

#include<stdio.h>
void main()
{
int n,i,s,x;
for(n=2;n<=1000;n++)
{
for(s=0,i=1;i<=n/2;i++)
{
x=n/i;
if(x==0)
s=s+x;
}
if(s==n)
printf("%d",n);
}
}