數論 尤拉函式

2021-08-17 03:00:03 字數 667 閱讀 9713

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

根據容斥定理我們可以得知

φ(12) = 12 - (12/2 + 12/3 )+12/(2*3)

容斥會很麻煩所以我們需要考慮簡化版

φ(12)=12*(1-1/2)*(1-2/3) == 12 - (12/2 + 12/3 )+12/(2*3)

phi(1)=1

**實現:

int phi(int x)

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

return ans;

}

單個查詢時間複雜度為o(√n)

可以用埃篩的方法預處理資料

#includeconst int n = 100000 + 5;

int phi[n];

void euler()}}

}int main()

數論 尤拉函式

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...

數論 尤拉函式

經過兩天的努力 終於把ac大神的課件都看完了 感動啊啊啊tat 頓時感覺智力上公升了乙個層次 之後看到數論的題目終於可以不用放棄 了 我會說我剛剛用了十分鐘就把尤拉函式看完了嗎 其實之前就會 尤拉函式也就是phi n 表示小於等於n的且與n互質的數的個數 尤拉函式的公式是 phi n n 1 1 p...