自用 關於尤拉函式以及逆元的一些模板

2021-06-28 22:06:16 字數 1131 閱讀 4306

首先我們要求

φ (x),可以先將其分解成∏(

apii

) 的形式,其中

a 是素數。

然後可以推導出公式

φ(x)=∏(

apii

−api

−1i)

然後這個可以實現為

φ (x)=x/

∏(ai

−1)

這樣就可以在

√ 時間內出解了。

線性篩!

因為尤拉函式是積性函式,所以我們可以採用線性篩。

過程見下方**getphi()函式。

首先有尤拉公式 xφ

(p) %p==

1 所以x

∗xφ(

p)−1

%p==1

這樣xφ

(p)−

1 就是x在mo

d p 意義下的逆元。

不考慮求

φ ,我們通過快速冪求逆元的時間複雜度是o(

log)

級別的同樣是線性篩,**在下面。

#include 

#include

#include

#include

#define n 1001000

using

namespace

std;

int phi(int x)

if(x>1)ans/=x,ans*=x-1;

return ans;

}int prime[n],phi[n],num;

bool vis[n];

void getphi(int n=1000000)

phi[k]=phi[i]*(prime[j]-1);}}

return ;

}long

long inv[n],p;

long

long power(long

long x,int k)

return ans;

}long

long inv(long

long x)

void getinv(int n=1000000)

int main()

尤拉函式的一些見解

尤拉函式求互質的個數 當時在res res res i 出沒有想明白,其實是挺簡單的,就是乙個公式,n n 1 1 p1 1 1 p2 1 1 pr 每次是res等於n,那麼只更新res,那麼為什麼不用n呢,因為n有更大的用處,那就是判斷終點,那什麼是重點呢 其實就是咱們要用的素數大於n的時候,就應...

Python函式以及變數的一些知識

python 函式 函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的 段。函式能提高應用的模組性,和 的重複利用率。你已經知道python提供了許多內建函式,比如print 但你也可以自己建立函式,這被叫做使用者自定義函式。函式呼叫 定義乙個函式只給了函式乙個名稱,指定了函式裡包含的引數,...

關於迴圈的一些理解(自用)

這個是for迴圈的一般的形式,for int a 0 a something a 這個是while迴圈的一般形式 while true 這個是do while迴圈的一般形式 dowhile 但是到了實際的應用中,1在排序中,迴圈可以用來操控迴圈的次數,2也可以操控陣列的下標來達到遍歷陣列的作用,3在...