首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求完数 不用数组 自己编的有有关问题

2012-03-30 
求完数 不用数组 自己编的有问题/*求1000以内的完数*/#include stdio.hvoidmain(){inta,ifor(a2a 1

求完数 不用数组 自己编的有问题
/*求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 ");
}
}
}
这样就不会死循环了

热点排行