~白. 发表于 2018-6-6 17:09:04

这样写代码可以求出所有完数吗?

一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
   找出1000以内的所有完数

#include "stdio.h"
void main()
{
    int i,sum,j;//sum等于因数之和
    for(i=3;i<=1000;i++)
    {
      sum=1;//重置sum值
      for(j=2;j<i;j++)//求因数
      {
            while(i!=j)
            {
                if(i%j==0)
                {
                   sum+=j;
                   i=i/j;
                }
                else
                {
                  break;
                }
            }
      }
      sum+=i;//因数之和
      if(i==sum)
            {
                printf("perfect number:%d",i);//输出完数
            }
    }
}

~白. 发表于 2018-6-6 17:13:14

我想问下错在哪里?该怎么改?

BngThea 发表于 2018-6-6 17:15:24

一个数的因子不仅仅是这些,比如
18的因子为1,2,3,6,9,其实还有18,但是根据题意,应该是比自身小的因子

用你的代码求出来的因子为
1,2,3,3,结果sum为9

~白. 发表于 2018-6-6 18:14:48

BngThea 发表于 2018-6-6 17:15
一个数的因子不仅仅是这些,比如
18的因子为1,2,3,6,9,其实还有18,但是根据题意,应该是比自身小的 ...

哦哦,谢谢提醒
页: [1]
查看完整版本: 这样写代码可以求出所有完数吗?