算法之――素数之筛选法

小于N的素数

方法:

1.设置数组flags[N],并初始化为1,即假定全部为素数

2.由于1,0,非素数,所以从i=2开始扫描数组,依次对i的倍数为下标的值设为0,表示其非素数(4,6...)

3.扫描数组,不为0即为素数

#include<iostream>

#include<vector>

using namespace std;


int main()

{

int N;

cin >> N;

vector<int> flags(N);


for (int i = 0; i < N; i++)

flags[i] = 1;

for (int i = 2; i<N; i++)

{

if (flags[i])

{

for (int j = i+i; j < N; j += i)

flags[j] = 0;

}

}

for (int i = 2; i < N;i++)

if (flags[i])

cout << i << " ";

}


你可能感兴趣的:(素数筛选法)