欧拉函数/欧拉定理

来源:互联网 发布:php 正式表达式 验证qq 编辑:程序博客网 时间:2024/04/29 13:06
欧拉函数
 对正整数n,欧拉函数小于等于n的数中与n互质的数的数目
 此函数以其首名研究者欧拉命名(Euler'so totientfunction),它又称为Euler'stotient functionφ函数、欧拉商数等。
 例如φ(8)=4因为1,3,5,7均和8互质

  注:n1时欧拉函数的值为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;
}


0 0
原创粉丝点击