题目描述
键盘输入N,N在2至2000之内,求2至N中的亲密数对,就是A的因子和等于B,B的因子和等于A,并且A≠B。 如48和75是亲密数对。48的因子和为2+3+4+6+8+12+16+24=75,而75的因子和为3+5+15+25=48。
只有一行,为一个数N( 2<=N<=2000 )
输出
输出若干行,每行两个整数(用一个空格格开)
样例输入
2000
样例输出
48 75
75 48
140 195
195 140
1050 1925
1575 1648
1648 1575
1925 1050
参考程序和运行结果:
#include
using namespace std;
int main()
{
int n,s,s2;
scanf("%d",&n);
for(int i=2;i<=n;i++)
{
s=0;
s2=0;
for(int j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
if(j*j!=i)
s=s+j+i/j;
else
s+=j;
}
}
if(s>n||s==i)
continue;
for(int k=2;k<=sqrt(s);k++)
{
if(s%k==0)
{
if(k*k!=s)
s2=s2+k+s/k;
else
s2+=k;
}
}
if(s2==i)
printf("%d %d\n", i,s);
}
return 0;
}