[算法] 筛元素 – 素数筛
筛分子算法由埃拉托色尼给出找到 灌注. 它是从研究的主要风格的检查其他算法区别, 检查所有必需的测试, 这不是一个素数的数量,然后离开. 合适的算法查找之间的所有素数的问题 [该, 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
你看看这里,请眨眼表情