rt
这是AC代码,如果没有int sq=sqrt(n) 然后把 sqrt(n) 带入 sq 的地方就寄了,求大佬指点QWQ
#include<iostream>
#include<cmath>
#define int long long
using namespace std;
const int N=65536+114;
int euler(int n){
int ans=n;
for(int i=2;i<=sqrt(n);++i){
if(n%i==0){
ans=ans/i*(i-1);
while(n%i==0) n=n/i;
}
}
if(n>1) ans=ans/n*(n-1);
return ans;
}
signed main(){
int n,ans=0;cin>>n;
int sq=sqrt(n);
for(int d=1;d<=sq;++d){
if(n%d==0){
ans+=euler(n/d)*d+euler(d)*(n/d);
}
}
if(sq*sq==n) ans-=euler(sq)*sq;
cout<<ans;
}