几道比赛题都是数论题,不会做,只好上网搜,然后自己整理一下。一些解题方法非本人原创。
题目大意:求∑gcd(i,N),1<=i<=N;
分析:
然后根据上式,从小到大对N的质因数进行相应操作,注意一些细节即可。。分析好麻烦,数学题吗擦。。。
#include<cstdio> int main() { long long n,i,x; while(scanf("%lld",&n)!=EOF) { x=1; for(i=2;i*i<=n;++i) { if(n%i!=0) continue; long long k=0,t=1; while(n%i==0) { n/=i; k++; t*=i; } x*=k*(t-t/i)+t; } if(n!=1) x*=2*n-1; printf("%lld\n",x); } return 0; }