求助一个稀奇古怪的题目!!
1.若正整数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以内的所有亲密数对,列如:亲密数对:
6--6
28--28
220--284
496--496
要求:
(1)定义函数 int sumfact(int n),该函数的功能是返回参数n的因子的和。
(2)在主函数中调用 sumfact 函数,输出 500 以内的亲密数 本帖最后由 jackz007 于 2019-12-10 09:41 编辑
#include <stdio.h>
#include <math.h>
sumfact(int n)
{
int k , s = 0 ;
if(n) for(s = 1 , k = 2 ; k < (int) sqrt(n) + 1 ; k ++) if(! (n % k)) s = s + k + n / k ;
return s ;
}
main(void)
{
int d , k , s ;
for(k = 2 ; k < 500 ; k ++) {
d = sumfact(k) ;
if(d == k || (sumfact(d) == k && k < d)) printf("%3d -- %3d\n" , k , d) ;
}
}
编译、运行实况:
C:\bin>g++ -o x x.c
C:\bin>x
6 -- 6
28 --28
220 -- 284
496 -- 496
C:\bin>
页:
[1]