前置知识:
1.对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。
2.
3.当n可以分解成两个质数p和q的乘积时,
下面推导欧拉函数:
代码如下:
#include<bits/stdc++.h>
using namespace std;
int n;
int main( )
{
cin>>n;
int res=n;
for(int i=2;i*i<=n;i++){
if(n%i==0){
res=res/i*(i-1); //这里要先进行除法运算,再进行乘法运算,否则会溢出
}
while(n%i==0){ //根据找到的因子把能除下去的都除掉
n/=i;
}
}
if(n>1){res=res/n*(n-1);} //最后剩下的那个数也要算进去
cout<<res;
return 0;
}