几道比赛题都是数论题,不会做,只好上网搜,然后自己整理一下。一些解题方法非本人原创。
题目大意:求∑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;
}