C语言 求1000以内完数问题

2024-11-29 02:34:54
推荐回答(4个)
回答(1):

最大的错误出在k没有在每次判断之前归0,修改如下:

//---------------------------------------------------------------------------

#include
#include /*用到了system()函数,必须包含此文件*/
main()
{
int i,j,k=0;
for(i=1;i<1001;i++)
{
k=0;/*注意这里*/
for(j=1;j{
if(i%j==0)
k=k+j;
}
if(k==i)
printf("%d\n",i);
}
system("pause");
}
//---------------------------------------------------------------------------

回答(2):

main()
{
int i,j,k=0;
for(i=1;i<1001;i++)
{
k = 0; //k要初始化为0;
for(j=1;j{
if(i%j==0)
k=k+j; //此处k要叠加,需要注意初始化问题
}
if(k==i)
printf("%d\n",i);
}
system("pause");
}

回答(3):

回答(4):

他们说的是对的,我就不想再说一大篇了