欧拉函数
对正整数
n
,欧拉函数
是
小于等于
n
的数中与
n
互质的数的
数目
此函数以其首名研究者欧拉命名
(
Euler'so
totientfunction)
,它又称为
Euler'stotient function
、
φ
函数、欧拉商数等。
例如
φ(8)=4
,
因为
1,3,5,7
均和
8
互质
。
注:n为1时欧拉函数的值为1
通式:
其中p1,p2……pn为x的所有质因数,x是不为0的整数。
注意:每种质因数只一个。比如12=2*2*3那么φ(12)=12*(1-1/2)*(1-1/3)=4
代码:
#include <iostream>
using namespace std;
int euler(int n)
{
int cnt=n;
for(int i=2; i*i<=n; i++)
{
if(n%i==0)
{
cnt-=cnt/i;
while(n%i==0)
{
n/=i;
}
}
}
if(n>1)
{
cnt-=cnt/n;
}
return cnt;
}
int main()
{
int n1;
while(cin>>n1&&n1!=0)
{
cout<<euler(n1)<<endl;
}
return 0;
}