使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。程序的功能是寻找1~500以内的亲和数并显示出来,函数amicableNum(int m,int n)判定两个数是否是亲和数。
亲和数的定义为:两个数m和11,如果n的所有因子之和(因子除掉自身)等于m,且m的所有因子等于n,则m、n是互为亲和数。
注意:不能修改程序的其他部分,只能补充amicableNum(int m,int n)函数。
1 #include< iostream.h >
2 int amicableNum(int n)
3 {
4 int sum=0;
5 for(int i=1;i< n;i++)
6 {
7 if(n%i==0)
8 {
9 sum+=i;
10 }
11 }
12 return sum;
13 }
14 bool amicableNum(int m,int n)
15 {
16
17 }
18 void main()
19 {
20 cout< < ''1~500以内的亲和数有:''< < end1;
21 for(int i=1;i< 500; i++)
22 {
23 for(int j=i+1;j500;j++)
24 {
25 if(i!=j)
26 {
27 if(amicableNum(i,j)==1)
28 {
29 cout< < i< < ''< < j< < end1;
30 }
31 }
32
33 }
34 }
35 return;
36 }
【正确答案】1 if(amicableNum(m)==n&&amicableNum(n)==m)
2 return 1;
3 return 0;
【答案解析】函数amicableNum(int m,int n)判定两个数是否是亲和数,亲和数指两个数的因子(除去本身)和分别是对方,因此在判断亲和数时先求这两个数的因子和,然后比较便可知是否是亲和数。
(1)程序中定义了两个amicableNum()函数,由于参数个数不同重载了amicableNum()函数,函数amicableNum(int n)返回n的因子和,而函数amicableNum(int m,int n)则是判断m和n是不是亲和数,两个函数功能并不相同。
(2)在amicableNum(int m,int n)函数中,可调用amicableNum(int n)函数求m和n的因子和,然后比较两个因子和,如果两个因子和相同则返回真,否则返回假。