题目:
若正整数A的所有因子(包括1但不包括自身)之和为B,而B的因子之和为A,则称A和B为一对亲密数。例如,6 的因子之和为1+2+3=6,因此6与6为一对亲密数(即6自身构成一对亲密数);又如,220 的因子之和为 l+2+4+5+10+11+20+22+44+55+110=284,而284 的因子之和为1+2+4+71+142=220,因此,220与284为一对亲密数。编写程序,求500以内的所有亲密数对,如图2-3所示。
图2-3
要求:
(1)定义函数 int sumfact(int n),该函数的功能是返回参数n的因子的和。
(2)在主函数中调用 sumfact 函数,输出 500 以内的亲密数
程序分析:
1、求A的因子之和为B,再求B的因子之和为C。判断A是否等于C。
2、何为亲密数对???
单来说,就是数a的正因子数(除本身外)等于数b的正因子数(除本身外)。
符合这项条件的两个数,我们称他们为亲密数对。
3、如何书写定义sumfact函数求出一个整数的所有因子之和?
代码:
1、
sumfact函数:
2、
主函数:
因为题中给出的结果包含两个数相同的情况,所以可以把该情况途中的代码注释掉;
若舍去两数相同的情况,只需去掉注释部分,如图:
总代码:
运行结果:
目录