Eular 函数模板
生活随笔
收集整理的這篇文章主要介紹了
Eular 函数模板
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
歐拉函數(shù):用來求1...n-1范圍內(nèi)與n互質(zhì)的數(shù)的個數(shù)
phi(n) = n*(1 - 1/p1)*(1 - 1/p2)*...*(1 - 1/pk) (p1, p2, ... pk為n的質(zhì)因子)
因為 n = p1q1 * p2q2 * ... * pkqk
帶入得:phi(n) = (p1 - 1)*p1q1-1 * (p2 - 1)*p2q2-1 * ... * (pk - 1)*pkqk-1;
? ? ? ?代碼:
int eular(int n) {int i, res = 1;for(i = 2; i*i <= n; ++i) {if(n%i == 0) {n /= i; res *= i - 1;while(n%i == 0) {n /= i; res *= i;}}}if(n > 1) res *= n - 1;return res; }??
歐拉函數(shù)打表:
int Eu[N];void init() {int i, j;for(i = 1; i < N; ++i) Eu[i] = i;for(i = 2; i < N; ++i) {if(Eu[i] == i) {for(j = i; j < N; j += i) {Eu[j] = Eu[j]/i*(i - 1);}}} }?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/vongang/archive/2013/01/23/2873788.html
總結(jié)
以上是生活随笔為你收集整理的Eular 函数模板的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ 1036 [ZJOI2008]
- 下一篇: boost.asio系列——socket