zoukankan      html  css  js  c++  java
  • 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);
     
  • 相关阅读:
    二分查找经典题型
    部队侦察
    取随机数函数的使用
    猜拳游戏
    Learning C Struct
    Linux shell get random number
    Linux Bash shell one practice : array if else
    Linux shell misc
    Bash Shell read file line by line and substring
    storm的并发和消息保障性
  • 原文地址:https://www.cnblogs.com/shenben/p/6022386.html
Copyright © 2011-2022 走看看