结果好象不准确``200-1200
有2对的
(220,284)和(1184 1210)
楼主,给你个比较快的代码,你测一下[1,100000]的区间
[CODE]#include<stdio.h>
#include<string.h>
#define M 500001
int f[M];
void init()
{
int i,j;
memset(f,0,sizeof(f));
for(i=2;i<M;i++)
{
for(j=i;j<M;j+=i)
if(j!=i)f[j]+=i;
f[i]++;
}
return;
}
int main()
{
int i;
int A,B,t;
init();
printf("Input A,B:");
scanf("%d,%d",&A,&B);
if(A>B)
t=A,A=B,B=t;
for(i=A;i<=B;i++)
if(f[i]>i&&f[i]<=B&&f[f[i]]==i)
printf("%d %d\n",i,f[i]);
return 0;
}[/CODE]