數論 尤拉函式

2022-06-04 06:15:10 字數 1500 閱讀 1332

經過兩天的努力 終於把ac大神的課件都看完了 感動啊啊啊tat 頓時感覺智力上公升了乙個層次 之後看到數論的題目終於可以不用放棄**了~~~ 我會說我剛剛用了十分鐘就把尤拉函式看完了嗎~~~(其實之前就會-。-)

尤拉函式也就是phi(n) 表示小於等於n的且與n互質的數的個數

尤拉函式的公式是 phi(n)=n*(1-1/p1)*(1-1/p2)*...*(1-1/pn)

要證明這個公式 我們需要先證明一些簡單的性質

1.若p為素數 phi(p)=p-1

小於某個素數的數都和這個素數互質- - 顯然

2.phi(p^k)=(p-1)*p^(k-1)

小於等於p^k的數中不與p互質的數肯定都是p的倍數

這些數有p^k/p=p^(k-1)個 而總共有p^k個數

所以phi(p^k)=p^k-p(k-1)=(p-1)*p^(k-1)

3.若(a,b)=1 phi(a*b)=phi(a)*phi(b)

ac大神因為尤拉函式是積性函式0 0? 我也不懂為什麼- -...

4.若p|a 則phi(p*a)=phi(a)*p

設 a=a'*p^k ((a',p)=1)

phi(p^k)*p

=(p-1)*p^(k-1)*p

=(p-1)*p^k

=phi(p^(k+1))

phi(a)*p

=phi(a')*phi(p^k)*p

=phi(a')*phi(p^(k+1))

=phi(a*p)

綜上所述

phi(n)

=phi(p1^a1*p2^a2*...*pn^an)

=phi(p1^a1)*phi(p2^a2)*...*phi(pn^an)

=((p1-1)*p1^(a1-1))*((p2-1)*p2^(a2-1))*...*((pn-1)*pn^(an-1))

=(p1^a1*p2^a2*...*pn^an)*((p1-1)*(p2-1)*...*(pn-1))/(p1*p2*...*pn)

=n*(1-1/p1)*(1-1/p2)*...*(1-1/pn)

得證!順便扯些關於尤拉函式的東西- -

尤拉定理:

若(a,n)=1 a^phi(n)=1(mod n)

費馬小定理:

當n為質數且(a,n)=1時 a^(n-1)=1(mod n)

費馬小定理推論:

這時a的乘法逆元為a^(n-2)

o(n)求尤拉函式**:

1

void

makepri()

7for (ll j=1;j<=pri[0] && i*pri[j]<=n;j++)14}

15}16 }

view code

數論 尤拉函式

尤拉函式,用 n 表示 尤拉函式是求小於等於n的數中與n互質的數的數目 求n的尤拉函式時我們可以減去它的所有素數因子以及它的倍數 12 12 2 2 3 素數因子有2 3所以我們減掉2,3的倍數 2的倍數 2,4,6,8,10,12 3的倍數 3,6,9,12 顯然2,3存在重複項6,12 根據容斥...

數論 尤拉函式

ll eular ll n if n 1 ans ans n n 1 return ans 尤拉函式的一些性質 當m,n互質時,有phi m n phi m phi n 若i p 0,有phi i p p phi i 對於互質x與p,有x phi 1 mod p 因此x的逆元為x phi 1 即尤拉...

數論 尤拉函式

大佬已經講的很清楚了,證明非常清晰 互質 兩個數的最大公約數為 1 稱這兩個數互質 求乙個數的尤拉函式 利用公式 int phi int n if a 1 ans ans n n 1 return ans 方法二 利用線性篩求多個數的尤拉函式 const int ma 1e5 5 bool book...