国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

歐拉函數(shù)(Euler' totient function )

lewinlee / 901人閱讀

摘要:傳送門這個就是主角歐拉函數(shù)。在數(shù)論中,對正整數(shù),歐拉函數(shù)是小于或等于的正整數(shù)中與互質(zhì)的數(shù)的數(shù)目。歐拉函數(shù)實際上是模的同余類所構(gòu)成的乘法群即環(huán)的所有單位元組成的乘法群的階。

歐拉函數(shù)(Euler" totient function )

Author: Jasper Yang

School: Bupt

前言

gamma函數(shù)的求導會出現(xiàn)所謂的歐拉函數(shù)(phi),在一篇論文中我需要對好幾個歐拉函數(shù)求值,結(jié)果不能理解,立即去google,發(fā)現(xiàn)了一個開源的python庫可以用來計算歐拉函數(shù)

class eulerlib.numtheory.Divisors(maxnum=1000)
    Implements methods related to prime factors and divisors.

    Parameters:    maxnum – Upper limit for the list of primes. (default = 1000)
    divisors(num)
        Returns a list of ALL divisors of num (including 1 and num).
        
        Parameters:    num – An integer for which divisors are needed.
        Returns:    A list [d1,d2,...dn] of divisors of num
    
    phi(num)
        Returns the number of totatives of num

        Parameters:    num – Integer for which number of totatives are needed.
        Returns:    Number of totatives of num

Note A totative of an integer num is any integer i such that, 0 < i < n and GCD(i,num) == 1.
Uses Euler’s totient function.

這個函數(shù)到這里并不能看懂用法和意義,下面我通過介紹兩個概念來讓大家慢慢理解這個過程。

Totative(不知道怎么翻譯) from wiki

在數(shù)論中,一個給定的n的totative是一個符合大于0并且小于等于n的k,并且這個k和n是互質(zhì)數(shù)(什么是互質(zhì)數(shù)呢)。

互質(zhì)數(shù)為數(shù)學中的一種概念,即兩個或多個整數(shù)的公因數(shù)只有1的非零自然數(shù)。公因數(shù)只有1的兩個非零自然數(shù),叫做互質(zhì)數(shù)。

歐拉方程 $$ phi(x) $$ 就是在計算n的totative個數(shù)。
在n的乘法模下的totatives形成了模n乘法群( Multiplicative group of integers modulo n )。 --->后面這句涉及的群的知識我去維基上了解下后沒看懂,放棄了,未來有機會看看中文資料理解一下再添加進來吧。 wiki傳送門

Euler"s totient function

這個就是主角歐拉函數(shù)。

from wiki

在數(shù)論中,對正整數(shù)n,歐拉函數(shù) $$ varphi (n) $$ 是小于或等于n的正整數(shù)中與n互質(zhì)的數(shù)的數(shù)目。此函數(shù)以其首名研究者歐拉命名,它又稱為φ函數(shù)(由高斯所命名)或是歐拉總計函數(shù)[1](totient function,由西爾維斯特所命名)。
例如 $$ varphi (8)=4 $$,因為1,3,5,7均和8互質(zhì)。
歐拉函數(shù)實際上是模n的同余類所構(gòu)成的乘法群(即環(huán) $$ {mathbb {Z}}/n{mathbb {Z}} $$ 的所有單位元組成的乘法群)的階。這個性質(zhì)與拉格朗日定理一起構(gòu)成了歐拉定理的證明。

若n是質(zhì)數(shù)p的k次冪, $$ varphi (n)=varphi (p^{k})=p^{k}-p^{{k-1}}=(p-1)p^{{k-1}} $$ ,因為除了p的倍數(shù)外,其他數(shù)都跟n互質(zhì)。

若 $$ n=p_{1}^{k_{1}}p_{2}^{k_{2}}cdots p_{r}^{k_{r}} $$

則 $$ varphi (n)=prod _{{i=1}}^{r}p_{i}^{{k_{i}-1}}(p_{i}-1)=prod _{{pmid n}}p^{{alpha _{p}-1}}(p-1)=nprod _{{p|n}}left(1-{frac {1}{p}} ight) $$
其中 $$ alpha _{p} $$ 是使得 $$ p^{{alpha }} $$ 整除n的最大整數(shù) $ alpha $(這里 $$ alpha _{p_{i}}=k_{i} $$ )。

例如 $$ varphi (72)=varphi (2^{3} imes 3^{2})=2^{{3-1}}(2-1) imes 3^{{2-1}}(3-1)=2^{2} imes 1 imes 3 imes 2=24 $$

我的理解

為什么會有兩個法則,一個是基本的計算而另一個是連乘,其實就是因為認為所有的數(shù)都可以拆解成兩個素數(shù)的k次冪的形式。

我需要的知識以上就足夠了,如果需要更多的理解,看下面的鏈接

歐拉函數(shù)wiki

PHI

Eulerlib

這是個開源的python語言的實現(xiàn)庫
我們主要使用里面的

eulerlib.numtheory.Divisors(maxnum=1000)下的

phi函數(shù)
使用過程,
e = eulerlib.numtheory.Divisors(10000) # 這里的10000是最大值,默認是1000
e.phi(100) # 求phi(100)

使用十分簡單。

這個函數(shù)的實現(xiàn)源碼如下: 源碼傳送門

    def phi(self,num):
        """Returns the number of `totatives 
        `_ of *num*
        
        :param num: Integer for which number of totatives are needed.
        :returns: Number of totatives of *num*
        
        .. note::
        
            A totative of an integer *num* is any integer *i* such that,
            0 < i < n and *GCD(i,num) == 1*.
        
        Uses `Euler"s totient function 
        `_.
        """
        if(num < 1):
            return 0
        if(num == 1):
            return 1
        if(num in self.primes_table):    # 這個素數(shù)的table一開始就有了,從別的包導來的,去看定義就是maxnum以內(nèi)的所有素數(shù)
            return num-1
        pfs = self.prime_factors_only(num) # 這個步驟就是找出p了
        prod = num
        for pfi in pfs:
            prod = prod*(pfi-1)/pfi
        return prod



    
    def prime_factors_only(self,num):
        """Returns the `prime factors 
        `_ *pf* :sub:`i` of *num*.
        
        :param num: An integer for which prime factors are needed
        :returns: A list [pf1,pf2,...pfi] of prime factors of *num*
        """
        if num in self.pfactonly_table:
            return self.pfactonly_table[num]
        elif ((num < 2) or (num > self.limit)):
            return []
        elif num in self.primes_table:
            self.pfactonly_table[num] = [num]
            return [num]
        else:
            result = []
            tnum = num
            for prime in self.primes_table:
                if(tnum%prime==0):
                    result.append(prime)
                    pdiv = prime*prime
                    while(tnum%pdiv == 0):
                        pdiv *= prime
                    pdiv //= prime        # 這個//= 和 /=似乎沒有區(qū)別
                    tnum //= pdiv
                    if(tnum in self.primes_table):
                        result.append(tnum)
                        break
                    elif(tnum == 1):
                        break
            self.pfactonly_table[num] = result
            return result

源碼看起來也十分的簡潔易懂,就是為了找出p1和p2然后就可以分別求phi值再相乘了。

paper done : 2017/4/19

文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/45550.html

相關文章

  • 從零開始構(gòu)造鄰近分類器KNN

    摘要:起步本章介紹如何自行構(gòu)造分類器,這個分類器的實現(xiàn)上算是比較簡單的了。不過這可能需要你之前閱讀過這方面的知識。在預測函數(shù)中,需要依次計算測試樣本與數(shù)據(jù)集中每個樣本的距離。篩選出前個,采用多數(shù)表決的方式。測試還是使用中提供的虹膜數(shù)據(jù)。 起步 本章介紹如何自行構(gòu)造 KNN 分類器,這個分類器的實現(xiàn)上算是比較簡單的了。不過這可能需要你之前閱讀過這方面的知識。 前置閱讀 分類算法之鄰近算法:KN...

    GeekQiaQia 評論0 收藏0
  • SegmentFault 技術周刊 Vol.30 - 學習 Python 來做一些神奇好玩的事情吧

    摘要:學習筆記七數(shù)學形態(tài)學關注的是圖像中的形狀,它提供了一些方法用于檢測形狀和改變形狀。學習筆記十一尺度不變特征變換,簡稱是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡明扼要地說明的編碼機制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來看這樣一個提問: pyth...

    lifesimple 評論0 收藏0
  • 記錄leetcode上的一些題

    摘要:此篇文章最先發(fā)布在我的博客上記錄上的一些題,基本上是上的題,其他的我會標注出來,用的語言目前是寫的代碼很庸俗,請大神不要見笑題目羅馬數(shù)字的規(guī)則如下羅馬數(shù)字共有個,即和。在較大的羅馬數(shù)字的左邊記上較小的羅馬數(shù)字,表示大數(shù)字減小數(shù)字。 此篇文章最先發(fā)布在我的博客mbinary上? ? 記錄OJ上的一些題,基本上是leetcode上的題,其他的我會標注出來,用的語言目前是python,寫的代...

    shixinzhang 評論0 收藏0

發(fā)表評論

0條評論

lewinlee

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<