#include <bits/stdc++.h> using namespace std; typedef long long ll; int Get_phi(int n) { int phi=n; for(int i=2;(ll)i*i<=n;++i) { if(n%i==0) { phi=(ll)phi*(i-1)/i; while(n%i==0) n/=i; } } if(n>1) phi=(ll)phi*(n-1)/n; return phi; } int main() { int n; scanf("%d",&n); ll ans=0; for(int i=1;(ll)i*i<=n;++i)//找出n的所有因数 { if(n%i==0) { ans+=(n/i)*Get_phi(i);//从前往后 if(i*i!=n) ans+=i*Get_phi(n/i);//从后往前 } } printf("%lld",ans); return 0; }
AcWing 221.龙哥的问题代码实现,今日份学习