C语言 求1000以内的完数 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3
C语言 求1000以内的完数 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3
日期:2018-05-15 14:05:58 人气:1
没太理解你的想法
while (n%i==0)
{
a-=i;
n/=i;
}
这段的意思是判断出来一个数是它的因子然后就把它除掉么?
那么这有两个问题
1.应该用if而不是while,否则会陷入死循环,一直在除1
2.这个想法本身貌似就有点儿问题,比如说18,它的因子包括1,2,3,6,9,但是如果你先除掉2在后面的判断中6就不是因子了,因子之间也有因子的关系
建议用更朴素的算法
for(i=1;i<n;i++)
{
if (n%i==0)