题目描述
如果A的全部真因子(包括1,不包括A自身)之和等于B;B的全部真因子之和等于A,则称整数A和B为一对亲密数。
求3000以内的亲密数对,每行输出一对,每对使用空格隔开。
每对亲密数的前一个数为较小数,后一个数为较大数。
#include <stdio.h>
int main(void)
{
int i,b,n;
int a=1;
while(a<3000)
{
for(i=1,b=0;i<=a/2;i++)
{
if(!(a%i))
{
b+=i;
}
}
for(i=1,n=0;i<=b/2;i++)
{
if(!(b%i))
{
n+=i;
}
}
if(n==a&&a<b)
{
printf("%d %d\n",a,b);
}
a++;
}
return 0;
}