#include #include #define MAX 9999 int firstdiv(int n) { int i; int q=ceil(sqrt(n)); for (i=2;i<=q;++i){ if (n%i==0) return i; } return n; } int divexp(int n,int d) { int dd=1; while (n%d==0){ n/=d; dd*=d; } return dd; } int sumdiv(int n) { if (n==1) return 1; int fd=firstdiv(n); int fdexp=divexp(n,fd); return sumdiv(n/fdexp)*(fdexp*fd-1)/(fd-1); } int main() { int d[MAX+1],i,sum=0; for (i=1;i<=MAX;++i){ d[i]=sumdiv(i)-i; } for (i=1;i<=MAX;++i){ if (iMAX && sumdiv(d[i])-d[i]==i){ sum+=i; } } printf("%d\n",sum); return 0; }