liuyanxiong 发表于 2019-12-8 09:45:19

求助一个稀奇古怪的题目!!

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 01:32:54

本帖最后由 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]
查看完整版本: 求助一个稀奇古怪的题目!!