得到互質數的個數 輕鬆認識尤拉函式

2021-10-08 14:29:52 字數 1606 閱讀 5560

尤拉函式用來求 在小於x的正整數且與x互質(公約數只有1)的數的個數,一般用φ(x)表示,這個φ(x)就是尤拉函式,也就是用來解決 「在1-x之間有多少個數與x構成互質關係」的問題

特別的,φ(1)=1,∏ 是直積符號,表示連乘

其中p1,p2…pi…pn為x的所有質因數,x是乙個正整數

根據唯一分解定理,我們可以把乙個整數唯一地分解為多個質數冪次的乘積,即

任取其中乙個因數,即t=pk,那麼如果將t分解為長度為p的若干段,則能分成pk/p段,也就是p(k-1)段,那麼這每一段裡,由於p本身是質數,那麼將有p-1個數與t互質(因為除了1),所以比t小且與t互質的數就有p(k-1)∗(p-1)這麼多,也就是φ(t)=p(k-1)∗(p-1),也是尤拉函式的特殊情況

把這種特殊情況的結論帶入求φ(x)中的話,x分解出的每乙個piai都可以看成乙個ti,然後許多個ti相乘,每個ti都是只有乙個質數的冪次的特殊情況,即t1=p1a1,t2=p2a2,那麼可以把唯一分解定理的形式寫成 x= t1∗t2∗t3∗… ∗tn,也就是

然後對其套用特殊情況的結論進行證明:

由此我們得到且證明了尤拉函式:

有關證明這裡不展開了,大部分情況了解就行

尤拉函式是積性函式,但不是完全積性函式:

對於質數p,φ(p)= p-1;

若p是質數且t=p(k-1),φ(t)=p(k-1)∗(p-1),也就是證明過程中的特殊情況結論

n>2時,φ(x)是偶數;

小於n的數中,與n互質的數的總和為:φ(n) * n / 2 (n>1);

x的因數(包括1和它自己)的尤拉函式之和等於x,即x=∑d∣x φ(d) ,其中d∣x是x能被d整除的意思。

在以上公式中很顯然,需要得知的量就是pi,也就是x的所有質因數,找出比x小的所有質數我們可以用篩法,再加一層判斷是否是因數就行了,所以之前學的尤拉篩就可以排上用場了

情況1:如果p為質數且p為x的因數,那麼

情況2:如果p不是x的因數,即p,x互質,那麼根據積性函式性質

所以**如下(一定要會寫,很有用):

//尤拉篩法求尤拉函式,建議對照尤拉篩法**一起看

const

int n =

1005

;int phi[n]

;//φ

bool isprime[n]

;int primes[n]

;int cnt;

void

euler

(int n)

for(

int j =

1; j <= cnt && primes[j]

* i <= n; j++

)//prime[j]表示當前推到的質數

else phi[i * primes[j]

]= phi[i]

* phi[primes[j]];

//情況2,否則兩個因子互質了,就可以利用尤拉函式是積性函式的性質 }}

}

關於互質數

自然數m,n,m 1,x n 1,y 求m,n互質 即m,n 最大公約數為1 的概率 x,y 驅於無窮大時,此概率的極限為6 2 function getpmn byval x as long,y as long as double dim a as byte,i as long,temp as d...

關於互質數

自然數m,n,m 1,x n 1,y 求m,n互質 即m,n 最大公約數為1 的概率 x,y 驅於無窮大時,此概率的極限為6 2 function getpmn byval x as long,y as long as double dim a as byte,i as long,temp as d...

尤拉函式求互質數個數

求解與n 1 n 1 互質的質因子的個數 解析 定義 對於正整數n,n 是小於或等於n的正整數中,與n互質的數的數目。例如 8 4,因為1,3,5,7均和8互質。性質 1.若p是質數,p p 1.2.若n是質數p的k次冪,n p 1 p k 1 因為除了p的倍數都與n互質 3.尤拉函式是積性函式,若...