看到互质要想到欧拉函数
此题有对称性
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int const N=1e5+7;
int n;
int get_phi(int n){
int res=1;
for(int i=2;i<=n/i;++i){
if(n%i==0){
res*=(i-1);
n/=i;
while(n%i==0) res*=i,n/=i;
}
}
if(n>1) res*=(n-1);
return res;
}
int main(){
cin >> n;
int ans=0;
if(n==1){
cout << 0;return 0;
}
for(int i=1;i<=n-1;++i){
ans+=get_phi(i);
//cout << get_phi(i) << "\n";
}
ans <<= 1;
ans++;
cout << ans;
return 0;
}
查看7道真题和解析