經過兩天的努力 終於把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)求尤拉函式**:
1view codevoid
makepri()
7for (ll j=1;j<=pri[0] && i*pri[j]<=n;j++)14}
15}16 }
數論 尤拉函式
尤拉函式,用 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...