#include<stdio.h> int main() { __int64 n,i,sum,l,r; while(scanf("%I64d",&n)!=EOF) { sum=0; for(i=1;i*i<=n;i++) { sum+=n/i*i; if(i!=n/i) { l=n/(i+1)+1; r=n/i; sum+=i*(l+r)*(r-l+1)/2; } } printf("%I64d\n",sum); } return 0; }
借鉴别人的代码
http://218.245.3.161/2011/03/08/5687
虽然还有一些不是很理解