和這幾天做的題比簡直太小兒科了==
尤拉函式是指:對於乙個正整數n,小於n且和n互質的正整數(包括1)的個數,記作φ(n)。(互質:公約數只有1的兩個整數,叫做互質整數。唯一和1互質的數就是1本身)
尤拉函式的性質:它在整數n上的值等於對n進行素因子分解後,所有的素數冪上的尤拉函式之積。
通式:φ(x)=x*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4)…..(1-1/pn),其中p1,p2……pn為x的所有質因數,x是不為0的整數。φ(1)=1(唯一和1互質的數就是1本身)。(x=(p1^a1)*(p2^a2)*(p3^a3)*(p3^a3)……*(pk^ak)
對於質數p,φ(p) = p - 1。注意φ(1)=1.
尤拉定理:對於互質的正整數a和n,有a^φ(n) ≡ 1 mod n。
尤拉函式是積性函式——若m,n互質,φ(mn)=φ(m)φ(n)。
若n是質數p的k次冪,φ(n)=p^k-p^(k-1)=(p-1)p^(k-1),因為除了p的倍數外,其他數都跟n互質。
特殊性質:當n為奇數時,φ(2n)=φ(n)
尤拉函式還有這樣的性質:
設a為n的質因數,若(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)。
然後附上**:
#include //尤拉之實現
using namespace std;
int main() }
} if(n>1) m=m/n*(n-1); //先進行除法是為了防止中間資料的溢位
cout<
} return0;
}
尤拉函式的推導
尤拉函式的定義 phi n 表示在1 n中與n互質的數 難點 與平常的遞推唯一不同的是 遞推不是由 n 1 推來,這給想出推理過程帶來了麻煩 如何充分使用互質這個概念,不像其他遞推能夠容易的列出遞推關係 分析 對互質的挖掘 兩個數的最大公約數 a,b 為 1 a,b 表示a,b的最大公約數 對構成b...
尤拉函式的求法
定義 尤拉函式f n 表示小於或等於n的數中與n互質的數的個數 通式 f n n 1 1 p1 1 1 p2 1 1 pn 其中p1,p2 pn為x的所有質因數,x是不為0的整數。1 1 唯一和1 互質的數 小於等於1 就是1本身 注意 每種質因數只乙個。比如12 2 2 3那麼 12 12 1 1...
尤拉函式的求法
long long eular long long n if n 1 ans ans n return ans const int maxn 1e5 const int branch 26 const int inf 0x3f3f3f3f const int mod 1e6 7 int euler ...