#include <iostream>
#include <cmath>
using namespace std;
typedef long long ll ;
ll n , ans , cnt ;
ll d ;
ll eluer(ll x){
ll res = x , now = 2;
while(x > 1){
if(x % now == 0){
res /= now ;
res *= (now - 1);
while(x % now == 0) x /= now ;
}
now++ ;
}
return res ;
}
ll read()
{
ll x=0;
bool flag=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-')
flag=0;
c=getchar();
}
while(c>='0'&&c<='9')
{
x=(x<<1)+(x<<3)+c-'0';
c=getchar();
}
return (flag?x:~(x-1));
}
int main(){
n = read();
for(ll i = 1 ; i <= sqrt(n) ; i++){
if(n % i == 0){
d = i ;
ans += d * eluer(n / d) ;
if(d * d != n){
d = n / d ;
ans += d * eluer(n / d) ;
}
}
}
cout<<ans ;
return 0 ;
}
为什么第五 六个点TLE 了(雾)