第一问的答案毫无疑问肯定是1(wow~ ⊙o⊙),毕竟除了i=1以外质因子的幂次一定大于等于2。
第二问 我们把它与id求卷积,发现形式就是n^2。
由 狄利克雷卷积 知
所以有:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=1e6+10;
const int mod=1e9+7;
ll phi[maxn];
ll prime[maxn];
ll tot=0;
int vis[maxn];
map<ll,ll>ansphi;
ll power(ll a,ll b)
{
ll ans=1;
while(b)
{
if(b&1)
ans=ans*a%mod;
a=a*a%mod;
b>>=1;
}
return ans;
}
ll inv6=power(6,mod-2);
ll inv2=power(2,mod-2);
void init()
{
phi[1]=1;
for(int i=2;i<maxn;i++)
{
if(!vis[i])
{
prime[++tot]=i;
phi[i]=i-1;
}
for(int j=1;j<=tot&&i*prime[j]<maxn;j++)
{
vis[i*prime[j]]=1;
if(i%prime[j])
phi[i*prime[j]]=phi[i]*phi[prime[j]];
else
{
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
}
}
for(int i=1;i<maxn;i++)
{
phi[i]=(phi[i]*i%mod+phi[i-1])%mod;
}
}
ll getphi(ll n)
{
if(n<maxn)
{
return phi[n];
}
if(ansphi[n])
{
return ansphi[n];
}
ll ans=1ll*n*(n+1)%mod*(2*n+1)%mod*inv6%mod;
for(int i=2,r;i<=n;i=r+1)
{
r=n/(n/i);
ans=(ans-1ll*(r-i+1)*(i+r)%mod*inv2%mod*getphi(n/i)%mod+mod)%mod;
}
return ansphi[n]=ans;
}
int main()
{
init();
ll n;
cin>>n;
cout<<1<<endl;
cout<<getphi(n)<<endl;
return 0;
}