这样写代码可以求出所有完数吗?
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如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);//输出完数
}
}
}
我想问下错在哪里?该怎么改?
一个数的因子不仅仅是这些,比如
18的因子为1,2,3,6,9,其实还有18,但是根据题意,应该是比自身小的因子
用你的代码求出来的因子为
1,2,3,3,结果sum为9
BngThea 发表于 2018-6-6 17:15
一个数的因子不仅仅是这些,比如
18的因子为1,2,3,6,9,其实还有18,但是根据题意,应该是比自身小的 ...
哦哦,谢谢提醒
页:
[1]