埃氏筛
简介和实现
从 2 开始,将每个素数的倍数,标记成合数。一个素数 的各个倍数,是一个差为 的等差数列。注意对于一个新的被迭代到的素数 ,其第一个应该标记的倍数不必从 开始,而是可以优化成 ,因为 已经分别在迭代小于 的其他素数时被标记了
下面的代码返回严格小于 的所有素数的数目
1 |
|
时间复杂度证明TODO
埃氏筛
https://exapricity.tech/Eratosthenes-Sieve.html
从 2 开始,将每个素数的倍数,标记成合数。一个素数 的各个倍数,是一个差为 的等差数列。注意对于一个新的被迭代到的素数 ,其第一个应该标记的倍数不必从 开始,而是可以优化成 ,因为 已经分别在迭代小于 的其他素数时被标记了
下面的代码返回严格小于 的所有素数的数目
1 |
|