记d(n)为n的所有真因数(小于n且整除n的正整数)之和。如果d(a) = b且d(b) = a,且a ≠ b,那么a和b构成一个亲和数对,a和b被称为亲和数。例如,220的真因数包括1、2、4、5、10、11、20、22、44、55和110,因此d(220) = 284。284的真因数包括1、2、4、71和142,因此d(284) = 220。说明284和220是亲和数。
求所有小于10000的亲和数的和。
#include<iostream>
#include<math.h>
using namespace std;int qh(int x){int temp = 0;for(int i=1;i<x;i++){if(x%i==0){temp+=i;}}return temp;
}int main()
{int sum = 0;for(int i=1;i<10000;i++){int t = qh(i);if(qh(t)==i&&t!=i){sum+=i;}}cout<<sum<<endl;return 0;
}
答案:31626