求1到n中,与n互质的数的个数的函数
互质的含义
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e7+9;
ll oula(ll a)//定义一个函数euler(N),euler(N)为 [1,N]中与N互质的数的个数,这个函数称为 欧拉函数
{
ll ans=a;
for(int i=2;i*i<=a;i++)
{
if(a%i==0)
{
while(a%i==0)
a/=i;
ans=ans/i*(i-1);
}
}
if(a>1)
ans=ans/a*(a-1);
return ans;
}
int main()
{
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
ll n,res=0;
cin>>n;
res=oula(n);
cout<<res;
return 0;
}