接下来我们来看看几道数论的题目。
代码
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
using namespace std;
long long n,i,j,m,k;
long long f[2000001];
long long r()
{
long long p=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-')
{
f=-1;
}
c=getchar();
}
while(c>='0'&&c<='9')
{
p=p*10+c-'0';
c=getchar();
}
return p*f;
}
long long sum=0;
int gcd(int a,int b)
{
if(b==0) return a;
return gcd(b,a%b);
}
long long phi(long long x)
{
for(i=2;i<=x;i++)
{
if(!f[i])
for(j=i;j<=x;j+=i)
{
if(!f[j])
f[j]=j;
f[j]=f[j]/i*(i-1);
}
}
}
long long ans;
int main()
{
n=r();
phi(n);
for(i=1;i<=n/2;i++)
for(j=i*2;j<=n;j+=i)
{
ans+=f[j/i]*i;
}
cout<<ans;
return 0;
}
/*
5
20 1
30 50 60 40 81
*/