心有灵犀数

如果整数A的全部因子(不包括A)之和等于B,且整数B的全部因子(不包括B)之和等于A,则将A和B称为亲密数,如220的全部因子(不包括220)之和:1+2+4+5+10+11+20+22+44+55+110等于284,284的全部因子(不包括284)之和:1+2+4+71+142等于220,故220和284为亲密数。求10000以内的所有亲密数。

 

采用穷举法对10000以内的数逐个求因子,并求出所有因子之和sum1,再对所求出的和sum1求因子,并再次求所有因子之和sum2,此时按亲密数的要求进行进一步筛选便求出最终结果。

 

void main()

{

int i, j, k, sum1, sum2; /定义变量为基本整型 /

for (i = 1; i <= 10000; i++) /对10000以内的数进行穷举 /

{

sum1 = 0;

sum2 = 0;

for (j = 1; j < i; j++)

if (i % j == 0) /判断j是否为i的因子 /

sum1 += j; /求因子之和 /

for (k = 1; k < sum1; k++)

if (sum1 % k == 0) /判断k是否是sum1的因子 /

sum2 += k; /求因子的和 /

if (sum2 == i && i != sum1 )

printf("%5d=>%5d\n", i, sum1); /输出亲密数 /

}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值