[算法] 筛元素 – 素数筛
筛分子算法由埃拉托色尼给出找到 灌注. 它是从研究的主要风格的检查其他算法区别, 检查所有必需的测试, 这不是一个素数的数量,然后离开. 合适的算法查找之间的所有素数的问题 [该, B] 这是特别有效的,当一个之间的距离, B是非常大的.
找到的素数的数量不仅基于初始元素的数量, 示例 2 是素数,则该数字是整除 2 当然不是素数, 号码 3 是素数,则所有的数字的倍数 3 被取消资格, 等的保留为素数.
素数筛是一种算法,埃拉托色尼的发现 素数. 它检查素数的基础过滤器. 在所有的数字我们要检查, 并取出假数. 适当找到所有质数 [该, B] a和b之间的距离远.
找一些不是素数, 只有基本素数以前. 例如 2 是一个素数, 因此所有的数字格 2 = 0 是假的, 3 是一个素数,所有数量是乘数 3 是假的,… 最后, 数字仍是素数,我们希望.

#include <stdio.h>
void primeLessN(int n) {
n = n + 1; // array in C begin by 0, so I add 1 into n
int prime[n];
int j, num;
prime[0] = prime[1] = 0;
// all number div 2 = 0 is false
for (num = 2; num < n; num++) {
if (num > 2 && num % 2 == 0)
prime[num] = 0;
else
prime[num] = 1;
}
// find prime number begin from 3
num = 3;
while (num <= n / 2) {
// find and set false for multiplier of p
for (j = num; num * j < n; j++)
prime[num * j] = 0;
// find next prime number
do {
num += 2;
} while (!prime[num]);
}
// out all prime number smaller n
for (num = 2; num < n; num++)
if (prime[num])
printf("%-3d", num);
}
int main() {
primeLessN(97);
//system ("pause");
return 0;
}



刚刚帮助自己检查算法 1 你用C离线TKS进入素数
http://daynhauhoc.com/t/wiki-ham-ki-m-tra-s-nguyen-t-trong-c-c/2171
你看看这里,请眨眼表情