欧拉函数的思想!!!!
刚开始写跪了,一直wa,太晚了,就只好先这样了
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define ll long long
using namespace std;
ll n,num[90000];
ll phi(ll x)
{
ll ans=1;
for (ll i=2;i*i<=x;i++)
{
if (x%i) continue;
ans*=i-1;
x/=i;
while (x%i==0) x/=i,ans*=i;
}
if (x>1) ans=ans*(x-1);
return ans;
}
int main()
{
while (scanf("%lld",&n)!=EOF)
{
ll ans=0,m=n;
ll k=0,i;
for(i=1;i*i<n;i++)
{
if(n%i==0)
{
num[k++]=i;
num[k++]=n/i;
}
}
if(i*i==n)
num[k++]=i;
if(k==2)
{
printf("%lld\n",2*n-1);
continue;
}
for(i=0;i<k;i++)
ans=ans+num[i]*phi(n/num[i]);
printf("%lld\n",ans);
}
return 0;
}