尤拉函式總結 數論 尤拉函式

2021-06-23 01:31:27 字數 1040 閱讀 8128

尤拉函式的定義:euler(k)=([1,n-1]中與n互質的整數個數).

eg:euler(8)=4,因為1,3,5,7均和8互質。

可以推出以下公式:

euler(k)=(p1-1)(p2-1)……(pi-1)*(p1^(a1-1))(p2^(a2-1))……(pi^(ai-1))

=k*(p1-1)(p2-1)……(pi-1)/(p1*p2*……pi);

=k*(1-1/p1)*(1-1/p2)....(1-1/pk)

故euler函式表達通式:

euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn)

,其中p1,p2……pn為x的所有素因數,x是不為0的整數。euler(1)=1(唯一和1互質的數就是1本身)。 

根據以上性質可以推出: 

若(n%a==0 && (n/a)%a==0) 則有:e(n)=e(n/a)*a;

若(n%a==0 && (n/a)%a!=0) 則有:e(n)=e(n/a)*(a-1);

尤拉公式的延伸:

乙個數的所有質因子之和是

euler(n)*n/2。

乙個質數n的尤拉函式是n-1

下面給出求euler函式的程式:

//直接求解尤拉函式,返回euler(n)

int euler(int n)

}if(a>1) res=res/a*(a-1);

return res;

}

在給出乙個篩法打euler函式表:

//篩選法打尤拉函式表

#define max 1000001

int euler[max];

void init(){

euler[1]=1;

for(int i=2;i

poj3090**

數論 尤拉函式

尤拉函式,用 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...