poj2407

欧拉函数裸题。

欧拉函数:在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。

欧拉函数的定义: E(N)= (  区间[1,N-1] 中与 N 互质的整数个数).

  对于 积性函数 F(X*Y),当且仅当 GCD(X,Y)= 1 时, F(X*Y) = F(X)* F(Y)

  任意整数可因式分解为如下形式:

        其中( p1, p2 ... pk 为质数, ei 为次数 )  

  所以

    

  因为 欧拉函数 E(X)为积性函数, 所以

     

  对于    , 我们知道 因为pi 为质数,所以 [ 1, pi-1 ] 区间的数都与 pi 互质

  对于 区间[ 1,   ]  ,共有  个数, 因为  只有一个质因子,

  所以与  约数大于1 的必定包含 质因子   , 其数量为   

    所以      

  又 E(N)为积性函数,所以可得 :

    

  又因为       其中( p1, p2 ... pk 为质数, ei 为次数 )  

         但是此计算公式,除法过多,所以计算速度较慢

  在程序中利用欧拉函数如下性质,可以快速求出欧拉函数的值 ( P为N的质因子 )

    若(N%P==0 && (N/P)%P==0) 则有:E(N)=E(N/P)*P;
 
    若(N%P==0 && (N/P)%P!=0) 则有:E(N)=E(N/P)*(P-1);
 
原文地址:https://www.cnblogs.com/shenben/p/6022386.html