BZOJ2705 POJ2480 SDOI2012 Longge的问题
数论题,本人数学不好,怕讲不清楚。。发一个貌似官方的题解。
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; }