Chose_Prime

素数筛选

素数也叫质数,即只能被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 }
View Code
原文地址:https://www.cnblogs.com/M-D-LUFFI/p/4188613.html