素数筛选
素数也叫质数,即只能被1和自己本身整除的数。在程序中,怎样筛选出在一定范围内中的素数呢?我们可以这样做:
① 先从2开始找,然后删去这一范围中所有能被2整除的数。
② 找到下一个没有被删去的数字n。
③ 删去这一范围内中所有能整除n的数。
④ 如果n*n>"范围最大值"就跳出,否则跳到第②步。
代码:
1 #include <iostream> 2 #define N 100001 3 4 using namespace std; 5 6 int prime[N]; 7 8 void Chose_Prime(int n) 9 { 10 prime[0] = 1; 11 prime[1] = 1; 12 for (int i = 2; i * i <= n; i++) 13 { 14 if (prime[i] == 0) //找到了没有被删掉的数字i 15 { 16 for (int j = 2 * i; j <= n; j += i) 17 { 18 prime[j] = 1; //prime数组里面值为0的便为素数 19 } 20 } 21 } 22 23 for (int i = 0; i < n; i++) //打印素数 24 { 25 if (prime[i] == 0) 26 { 27 cout << i << endl; 28 } 29 } 30 } 31 int main() 32 { 33 Chose_Prime(100); 34 return 0; 35 }