尤拉函式入門

2021-10-08 00:02:54 字數 2747 閱讀 1812

在數論,對正整數n,尤拉函式是小於或等於n的正整數中與n互質的數的數目

φ(x)=x∏i=

1n(1

−1pi

)\prod_^n)}

∏i=1n​

(1−p

i​1​

) (其中p1, p2……pn為x的所有質因數)

我覺得網上許多部落格的證明不太嚴謹,我嚴格證明一下

首先明白兩個性質

1:當n=p

kp^k

pk(且p是質數的情況下) φ(n)=p

kp^k

pk- p k−

1p^

pk−1

因為顯然n的質因子只有乙個就是p,那麼1-n中不和他互素的就是因子含有p的數即 p×1,p×2,p×3… p×pk−

1p^

pk−1

即總共有pk−

1p^

pk−1

個數,而總數有pkp^

pk,那麼結果就是pkp^

pk-p k−

1p^

pk−1

2:尤拉函式是積性函式,但不是完全積性函式。若m,n互質,則φ(m∗n)=φ(m)∗φ(n),這個我不會證明,直接看維基百科的證明吧:證明:設a, b, c是跟m, n, mn互質的數的集,據中國剩餘定理,a×b×c可建立雙射(一一對應)的關係

而x=p1k

1^

p1​k1​

×p 2k

2^

p2​k2​

×p 3k

3^

p3​k3​

…p nk

n^

pn​kn​

φ(x)=(p1k

1^

p1​k1​

- p 1k

1−

1^-1}

p1​k1​

−1)(p 2k

2^

p2​k2​

- p 2k

2−

1^-1}

p2​k2​

−1)…(pnk

n^

pn​kn​

- p nk

n−

1^-1}

pn​kn​

−1)=x∏i=

1n(1

−1pi

)\prod_^n)}

∏i=1n​

(1−p

i​1​

)1:對於質數p,φ ( p )=p−1。顯然

2:…還有一些其他性質,暫時不要用到,先不再學習

複雜度是n×n

2\sqrt[2]

2n​

#include

#include

#include

#include

#include

#include

#include

#define fi first

#define se second

#define debug printf("i am here\n");

using

namespace std;

typedef

long

long ll;

const

int maxn=

3e5+

5,inf=

0x3f3f3f3f

,mod=

998244353

,lim=

1e7+

5e6;

const ll inf=

0x3f3f3f3f3f3f3f3f

;int t,n;

inteuler

(int x)}}

if(x!=1)

return ans;

}int

main()

return0;

}

但是如果n比較大,要求[1,n]的所有尤拉函式,是不是很像求質數,先用埃式篩

void

euler

(int n)

for(

int i=

2;i<=n;i++)}

}}

既然有埃式,那麼就有線性篩,線性篩有點難懂

前提是要懂尤拉篩。每個數被最小的因子篩掉的同時,再進行判斷。i表示當前做到的這個數,prime[j]表示當前做到的質數,那要被篩掉的合數就是i*prime[j]。若prime[j]在這個合數里只出現一次(i%prime[j]!=0),也就是i和prime[j]互質時,則根據尤拉函式的積性函式的性質,phi[i * prime[j]]=phi[i] * phi[prime[j]]。若prime[j]在這個合數里出現了不止一次(i%prime[j]=0),也就是這個合數的所有質因子都在i裡出現過,那麼根據公式,φ(i * prime[j])=prime[j] * i *∏i=

1n(1

−1pi

)\prod_^n)}

∏i=1n​

(1−p

i​1​

) 。複雜度為o(n)。

還是看**吧:

void

euler

(int n)

for(

int j=

1;j<=num&&prime[j]

*i<=n;j++

)//經典的尤拉篩寫法

else}}

}

尤拉函式入門

鏈結 尤拉函式就是 n 不 超過n且 與n互素 的正整數 的個數 n 不超 過n且與 n互素的 正整數的 個數,尤拉函式是乘 積 性函式,所以對於兩個任意互素的n,m都存在f n m f n f m f n m f n f m 乘性函式性質 對於任意正整數n,m都存在f n m f n f m f ...

尤拉函式入門

對正整數n,尤拉函式是小於n的正整數中與n互質的數的數目 1 1 例如 8 4,因為1,3,5,7均和8互質。性質 若n是素數p的k次冪,n p k p k 1 p 1 p k 1 因為除了p的倍數外,其他數都跟n互質 尤拉函式是積性函式 若m,n互質,mn m n phi p p 1 p為質數 當...

尤拉函式 尤拉定理

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