上手思路: f(x)=y f(y)=x, 这种关于y=x轴对称的形式会让人想首先找到f()这个规则
f() 就是简单的循环查找所有真约数并求和
然后在主函数里面正向套用与反向套用结果符合条件就好了
#include<bits/stdc++.h>
using namespace std;
int sumofproperdivisors(int num)
{
int sum =0;
for(int i=1;i<num;i++)
{
if(num%i==0)
sum+=i;
}
return sum ;
}
int main()
{
int a=0,b=0;
for (int i=1;i<10000;i++)
{
a=sumofproperdivisors(i);
if(a!=0 && sumofproperdivisors(a)==i && a!=i)
{
b+=i;
}
}
cout<<b<<endl;
return 0;
}
第一次运行出现结果40824的结果,原因是没有添加约束条件 x!=y
添加之后输出 31626