在數論,對正整數n,尤拉函式是小於或等於n的正整數中與n互質的數的數目
φ(x)=x∏i=
1n(1
−1pi
)\prod_^n)}
∏i=1n
(1−p
i1
) (其中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^
p1k1
×p 2k
2^
p2k2
×p 3k
3^
p3k3
…p nk
n^
pnkn
φ(x)=(p1k
1^
p1k1
- p 1k
1−
1^-1}
p1k1
−1)(p 2k
2^
p2k2
- p 2k
2−
1^-1}
p2k2
−1)…(pnk
n^
pnkn
- p nk
n−
1^-1}
pnkn
−1)=x∏i=
1n(1
−1pi
)\prod_^n)}
∏i=1n
(1−p
i1
)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
i1
) 。複雜度為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時尤拉函式...