在m到n内找出所有的亲密数对。
若a、b为1对亲密数,则a的因子和等于b、b的因子和等于a、且a不等于b。如:220、284是1对亲密数,则284、220也是1对亲密数。(一个数的因子不包含自己,但包含1)
输入格式:
两个数m和n。
输出格式:
每行两个数a,b,表示a和b是亲密数,且a<b;每行的第一个数按从小到大输出。两个数间用一个空格隔开。
样例">输入样例:
18 299
输出样例:
在这里给出相应的输出。例如:
220 284
解答:
#include <stdio.h>
#include <stdlib.h>
int g[100000];
int main()
{
int a, b, m, n, k;
scanf("%d %d", &a, &b);
for (m = a; m <= b; m++)
{
for (n = 2, k = 1; n <= m / 2; n++)
{
if (m % n == 0)
{
k = k + n;
}
}
g[m] = k;
}
for (m = a; m < b;m++)
{
for (n = m + 1; n <= b; n++)
{
if (g[m] == n && g[n] == m)
{
printf("%d %d\n", m, n);
}
}
}
return 0;
}