7-3 寻找亲和数对
题目描述
所谓亲和数对,是指两个不同的自然数,
其中任何一个数的真因数之和都恰好等于另一个数。
例如:220 和 284 就是一对亲和数对。
220 的全部真因数包括:
1、2、4、5、10、11、20、22、44、55、110, 它们的和恰为 284;
284 的全部真因数包括:
1、2、4、71、142,它们的和也恰好为 220。
据说,两个好朋友佩带写有亲和数对的护身符可使两人保持良好的友谊。
功能需求
请编写程序,输入区间的下限和上限,若该区间内存在亲和数对,
则输出区间内的全部亲和数对,否则输出 None。
输入格式:
两个正整数 a 和 b,且 a ≤ b ≤ 100000000,即区间 [a, b] 的下限和上限
输出格式:
若存在亲和数对,则输出若干行,每行一个亲和数对,均在区间 [a, b] 内,
且前者小于后者,两者以空格间隔;否则输出 None。
输入样例1
1000 3000
输出样例1
1184 1210
2620 2924
输入样例2
7000 9000
输出样例2
None
代码内容
#include <stdio.h>
int main()
{
int a,b,c,i,j=0;
int m,n;
scanf("%d%d",&m,&n);
for(a=m;a<=n;a++)
{
for(b=0,i=1;i<a;i++)
{
if((a%i)==0)
b+=i;
}
for(c=0,i=1;i<b;i++)
{
if((b%i)==0)
c+=i;
}
if(c==a&&a<b)
j++,printf("%d %d\n",a,b);
}
if(j==0) printf("None");
return 0;
}