c编程求助

来源:百度知道 编辑:UC知道 时间:2024/05/21 19:40:41
题目:如果一个数恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。编程找出1000之内所有完数。
我编的程序如下,大家帮忙看看错在哪里了:
如下:
#include "stdio.h"
main()
{
int i,j,s,t;
for(i=2;i<=1000;i++)
{
t=i;
for(j=2,s=0;j<i;j++)
{
if(i%j==0)
{
s=s+j;
i=i/j;
}
}
s=s+1;
if(t==s)
printf("%d ",s);
}
}
出不了结果啊,另外这是一道一本书上“循环程序设计”章节后的练习题,我不想涉及数组,只用循环。帮下忙,谢谢

1.t=i;是没有必要的
2.i=i/j也是不要的,没有必要,j要被i整除就可以了,就j<i就行了
3.s要在i循环的时候复位为0

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

#include "stdio.h"
void main()
{
int i,j,s,t;

for(i=2;i<=1000;i++)
{
t=i;
s=0;
for(j=2;j <t;j++)
{
if (t%j == 0)
s=s+j;
}
s=s+1;
if (t == s)
printf("%d\n",t);
}

}

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