怎么找出1000以内所有完数

如题所述

完数,即完美数,一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。
1000以内所有完数
C语言代码:
#include <stdio.h>
/**CopyRight@fantasy0707*/
#define N 1000 //完数求解范围
main()
{
int i,j,sum; //sum用来存放因子之和

for(i=1;i<N;i++) //对1到1000以内的数依次尝试
{
sum=0; //给sum赋值,同时也是对上一次的值清空
for(j=1;j<=i/2;j++) //查找因子
{
if(i%j==0) // 如果是因子
{
sum+=j; //把当前的因子累加到sum中
}
}
if(sum==i) //判断是不是完数,即因子之和等于自身
{
printf("%-5d its factors are: ",i); //是完数,输出
for(j=1;j<=i/2;j++) //再次找出这个完数的因子
{
if(i%j==0) //输出各个因子
printf("%d,",j);
}
printf("\n");
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-28
#include <stdio.h>
int main()
{
   int n=1000;
   int r,j,i;
   for(i=1;i<n; i++)
   {
      r = 0;
      for(j=1;j<i;j++)
      {
          if(i%j == 0)
          {
               r = r + j;
          }
      }
      if(r == i)
      {
          printf("the result is:%d\n",r);
      }
   }
   return 0;
}

相似回答