c语言找200以内完数改错,怎样找出1000以内的所有完数?帮帮忙,谢谢啦!

这个帖子已经回过了。某个网友给过答案了,我给他修改了一点。把中间结果记录到表中,以避免重复计算。

21c92f7342edc52acb5684b0b88bdcec.png程序代码:/*

* 一个数如果恰好等于它的因子之和,那么它就称为完数.

* 例如,6的因子为1,2,3,而6=1+2+3,因此

* 6是完数.编程找出1000内的所有完数,并且按照

* 下面格式输出其因子:

*        6 its factors are 1,2,3

*/

#include

#define SCOPE 1000

/* 1000 have 16 factors: 1,2,4,5,8,10,20,25,40,50,100,125,200,250,500,1000*/

#define N 16

#define TRUE 1

#define FALSE 0

int Factors[N];

int isFactor(int num,int vector)

{

int result = FALSE;

if( num % vector == 0)

{

result =TRUE;

}

return result;

}

main()

{

int sum,target;

int result,i,count;

for(target = 2;target<=SCOPE;target++)

{

sum = 0;

count=0;

for(i=1;i<=target/2;i++)

{

if(isFactor(target,i))

{

sum += i;

Factors[count++] = i;/*把找到的因子结果记录到表中*/

}

}

if(sum == target)

{

printf("%d\t",target);

printf("its factors are:");

for(i=0;i

{

printf("%d,",Factors[i]);

}

printf("\n");

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值