首先我們要求
φ (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在...