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