#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<iomanip>
using namespace std;
int A,B;
long long shuzhi;
long long a[500];//保存找过或间接找过的数
int summ=0;
long long dear(int n)//算n的亲和数
{
shuzhi=1;
for(int i=2;i<int(sqrt(double(n)));i++)
if(n%i==0)
{
shuzhi+=i;
shuzhi+=n/i;
}
if(n%int(sqrt(double(n)))==0) shuzhi+=int(sqrt(double(n)));
return shuzhi;
}
int main()
{
int zz=1;
memset(a,0,sizeof(a));//数组赋初值0
cin>>A>>B;
for(int i=A;i<=B;i++)
{
bool q=1;//开布尔值判断
for(int j=1;j<=zz;j++)
if(a[j]==i) {q=0;break;}//搜寻当前枚举的i值是否已在数组a中
if(!q) continue;
if((i==dear(dear(i)))&&(i<dear(i)))//注意一定i<dear(i)!!!
{
a[++zz]=i;
a[++zz]=dear(i);
summ++;
}//如果找到一组亲和数对且i<j就记录
}
cout<<summ<<endl;//输出数对总数return 0;
}
错了4遍都是在i<dear(i)上。要想清楚大小关系。