求完数 不用数组 自己编的有问题
/*求1000以内的完数*/
#include <stdio.h>
void main()
{
int a,i;
for(a=2;a <=1000;a++) /*for有问题会进入死循环,why?*/
{
for(i=1;i <a;i++)
if(a%i==0)
a-=i;
if(a==0) /*次if没有问题*/
{
printf( "%d its factors are: ",a);
for(i=1;i <a;i++)
if(a%i==0)
printf( ",%d ",i);
printf( "\n ");
}
}
}
[解决办法]
a-=i;这句的问题,a是循环控制变量,在这里被改变了,不能正确的进行控制。
void main()
{
int a,i, b;
for(a=2;a <=1000;a++) /*for有问题会进入死循环,why?*/
{
b = a;
for(i=1;i <b;i++)
if(b%i==0)
b-=i;
printf( "b = %d\n ", b);
if(b==0) /*次if没有问题*/
{
printf( "%d its factors are: ",b);
for(i=1;i <b;i++)
if(b%i==0)
printf( ",%d ",i);
printf( "\n ");
}
}
}
这样就不会死循环了