数学杂谈
约定
- 下文代码中
lint代表long long。 - 下文代码中
pll代表std::pair<lint, lint>。
质数
试除法判定质数
引理 1:∀ x ∈ {ℤ ∖ ℙ},必然
引理 1 证明:
假设
使得 u ∣ x。 因为 x 为合数,那么必然存在整数
使得 u ∣ x。 那么令
,则 u ∣ x,且 ,所以假设不成立。 故 ∀ x ∈ {ℤ ∖ ℙ},必然
,使得 u ∣ x。
那么可以遍历
时间复杂度为
1 | bool if_prime(lint x) { // 如果 x 为质数,返回 true;否则返回 false |
分解质因数
时间复杂度为
1 | // 对 x 分解质因数,返回 std::vector<pll>,每一个元素 first 为底数,second 为指数 |
质数筛
时间复杂度为 O(n)。
1 | // 范围 [1,n] 中所有质数 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 一个Oier!
