尤拉函式定理及其性質

2021-10-07 20:29:53 字數 1249 閱讀 5328

尤拉函式就是指:給定乙個n,求得1到n中與n互質的數的個數

再介紹尤拉通項前,首先得介紹唯一分解定理

那麼求乙個數的尤拉值的公式為:

φ(n)=n * (1-1/p1) * (1-1/p2) * … * (1-1/pn)

其中的p1到pn為n分解出來的質因子

那麼求乙個數的尤拉值的時間複雜度為o(sqrt(n))

**實現:

int

euler

(int n)}if

(n >1)

ans = ans / n *

(n-1);

return ans;

}

但是如果求1到n中所有數的尤拉值,那麼現在的時間複雜度為o(n*sqrt(n)),如果數多還是挺耗時間的。

那麼如何優化呢?

首先我們已經知道了每乙個數都能寫成多個質數的乘積形式。

例:我們賦值陣列phi[16]中phi[1] = 1,phi[2] = 2,…phi[15] = 15

那麼我們現在列舉質數:

現在的質數為2,那麼我們把2的倍數的數,根據尤拉公式來乘(i-1)/i,也就是phi[2] * = (1/2),phi[4] * = (1/2),phi[6]…phi[14] * = (1/2),然後再列舉3這個質因子,再列舉5…

**實現

int phi[n+1]

;int

euler

(int n)

這樣時間複雜度能降下來

尤拉函式的性質:

1.如果n,m互質,那麼 : φ(n*m) = φ(n)*φ(m)

2.如果n為質數,那麼 : φ(n) = n-1,可推出1中φ(n * m) = (n-1)*(m-1)

3.如果n % m == 0,那麼 : φ(n * m) = m * φ(n)

4.在3的基礎上 : if(n % m == 0 && φ(n / m)%m == 0) φ(n) = φ(n/m)*m

5.在3的基礎上 : if(n % m == 0 && φ(n / m)%m != 0) φ(n) = φ(n/m)*(m-1)

6.當n為奇數時,φ(n) = φ(2*n)

7.與小於等於n中,與n互質的數之和為:φ(n)*n/2

尤拉函式及其性質

1.尤拉函式定義 尤拉函式 n 表示的是小於等於n且和n互質的正整數的個數。易知 1 1 2.尤拉函式公式 對於任意整數n,若其質因數分解結果為n p1 k1p2 k1.pn kn,則尤拉函式公式為 n n 1 1 p1 1 1 p2 1 1 pn 3.尤拉函式性質 1 尤拉函式為積性函式。對於數論...

尤拉函式 尤拉定理

尤拉函式 對正整數 n,尤拉函式 是小於等於 n的數中與 n互質的數的數目 此函式以其首名研究者尤拉命名 euler so totientfunction 它又稱為 euler stotient function 函式 尤拉商數等。例如 8 4,因為 1,3,5,7均和8 互質。注 n為1時尤拉函式...

尤拉函式 尤拉定理

尤拉函式 設 n 為正整數,則 1,2,n 中與 n 互素的整數的個數計作 n 叫做尤拉函式。設 p 是素數,p p 1設 p 是素數,pa pa p a 1 設 p,q 是不同的素數,n q p,n p q 即 n p 1 q 1 設 m,n 是兩個正整數,且 m,n 1,若 n m n,n m ...