#include<cstdio>
typedef long long ll ;
ll quick_pow(ll n , ll k){
ll ans = 1;
while(k){
if(k&1)
ans *= n;
n*=n;
k>>=1;
}
return ans ;
}
void f(ll &n){
ll ans = 1 ;
for(ll i=2; i*i<=n; ++i){
ll cnt = 0;
if(n%i==0){
while(n%i==0){
cnt++;
n/=i;
}
ll tmp = quick_pow(i,cnt) ;
// printf("%lld\n",((cnt)*(tmp-tmp/i)+tmp)) ;
ans*=((cnt)*(tmp-tmp/i)+tmp) ;
//prin((cnt)*(tmp-tmp/i)+tmp) ;
}
}
if(n!=1){ // big prime factor
//printf("%lld\n",ans) ;
ans*=(n*2-1) ;
}
printf("%lld\n",ans) ;
}
int main(){
ll n ;
while(~scanf("%lld",&n)){
f(n) ;
}
return 0 ;
}
poj 2480 Longge's problem
最新推荐文章于 2022-02-17 22:54:29 发布