线性筛法求素数
2012-09-27 08:22
204 查看
这个是经典的Eraosthenes筛法:
但是Eraosthenes筛法的速度并不快,原因在于对于一个合数,这种方法会重复的标记。一种线性筛素数的方法有效的解决了这一点,代码如下:
for (int i = 2; i * i < N; i++) { if (tag[i]) continue; for (int j = i; j * j < N; j++) tag[i*j] = 1; } for (int i = 2; i < N; i++) if (!tag[i]) prime[tol++] = i;
但是Eraosthenes筛法的速度并不快,原因在于对于一个合数,这种方法会重复的标记。一种线性筛素数的方法有效的解决了这一点,代码如下:
void get_prime() { int cnt = 0; for (int i = 2; i < N; i++) { if (!tag[i]) p[cnt++] = i; for (int j = 0; j < cnt && p[j] * i < N; j++) { tag[i*p[j]] = 1; if (i % p[j] == 0) break; } } }
相关文章推荐
- 线性筛法求素数
- Sicily 1089.Farey Sequence[线性筛法求素数]
- 线性筛法求素数的原理与实现
- 线性筛法求素数+欧拉函数+矩阵快速幂+快速求第n个斐波那契数
- 线性筛法求素数的原理与实现
- 筛法求素数&线性筛法求素数
- 线性筛法求素数
- 【模板】线性筛法求素数
- 线性筛法求素数
- 线性筛法求素数表
- 线性筛法求素数
- {模板}线性筛法求素数
- 【线性筛】【筛法求素数】【约数个数定理】URAL - 2070 - Interesting Numbers
- 线性筛法求素数【Template】
- 【线性筛】【筛法求素数】【素数判定】URAL - 2102 - Michael and Cryptography
- 线性筛法求素数模板
- 线性筛法求素数
- 线性筛法求素数的原理与实现
- 欧拉线性筛法求素数(顺便实现欧拉函数的求值)
- {模板}线性筛法求素数表