质数
修电缆的建筑工
以山为舷,以海为泉
展开
-
质数:线性筛法
对于之前的Eratosthenes,它的时间复杂度是O(NloglogN),虽然十分接近线性,但是仍有合数被多次标记的情况.比如12,就算从x²开始检索,12也会被2和3同时标记.因此并不是最优解. 本篇题解要讲的线性筛法,基本思路即通过质因子来标记合数,首先像其它筛法一样从2~N枚举每个数.如果这个数是质数,那就将它存起来.然后无论它是不是质数,都扫描每个不大于...原创 2018-10-12 19:39:52 · 493 阅读 · 0 评论 -
质数:试除法
若单判定一个数是不是质数,我们通常会用到试除法.这个算法会从2~√N枚举每一个数,若有一个数能整除N,那么N就是合数,反之是质数.#include <iostream>using namespace std;bool is_prime(const int &n){ for(int i = 2; i * i <= n; i++) if(n ...原创 2018-10-12 19:52:53 · 527 阅读 · 0 评论 -
质数:Eratosthenes筛法
筛出1~n之间的所有质数. Eratosthenes筛法,即找到一个质数x后,把x的倍数2x,3x...(n/x)*x都标记为质数.当扫描到一个数时,若没有被标记过就说明它是质数,反之不是质数.大致过程如下:2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1...原创 2018-10-11 00:06:13 · 266 阅读 · 0 评论