数论题,本人数学不好,怕讲不清楚。。发一个貌似官方的题解。
Code:
#include <cstdio>
#include <iostream>
using namespace std;
int main(){
long long n,p,a,ans;
while (cin >>n){
ans=n;
for (long long i=2;i*i<=n;i++){
if (n%i==0) {
p=i;a=0;
while (n%p==0){
a++;n/=p;
}
ans+=ans*a*(p-1)/p;
}
}
if (n!=1) {
ans=ans*(n*2-1)/n;
}
cout <<ans<<endl;
}
return 0;
}