书案图片和尺寸:这段代码在寻找1000以内的完数以后,为什么后面会多输出一个“1”?(C语言)

来源:百度文库 编辑:高考问答 时间:2024/04/30 22:47:30
#include <stdio.h>
main () {
int i,j,sum;

for(i=1;i<=1000;i++){
sum=0;
for(j=1;j<=i;j++)
if (i/j*j==i) sum+=j;
if (sum==i) printf("%d\t",i);
}
}
我当然知道我的代码肯定是有错误的,要不干吗还要上这来提问啊?我提问的目的就是为了纠正我自己的错误。
而且,最重要的是我想知道“为什么”唉~~~还是去别处找答案吧。

#include <stdio.h>
main () {
int i,j,sum;

for(i=1;i<=1000;i++)
{sum=0;
for(j=1;j<=i;j++)
{if (i/j*j==i) sum+=j;
if (sum==i) printf("%d\t",i);}}}

第二个For循环应该是
for(j=1;j<=i/2;j++)

for(j=1;j<i;j++)
否则不光会有一个1,打印出来的数也有问题
1000以内的好像就有三个完数:6,28,还有一个三位数忘了,你的肯定不对