素数筛

// 素数筛
/* 原理 :
开一个标记数组,全部初始化为 true,0、1不是素数,直接从数组里划掉。 
紧跟着在 0、1后面的【最小的素数】是 2。 
从2开始,凡是2的倍数、且小于100000的,全部标记为false。 
再找2以后的、是【素数】的下一位数,是3 
从3开始,凡是3的倍数、且小于100000的,全部标记为false。 
再找3以后的、是【素数】的下一位数,是5 
从5开始,凡是5的倍数、且小于100000的,全部标记为false。 
这样循环,直到开始的位置大于100000,退出循环。 
这样,所有标记为TRUE的元素的下标全是素数。 	

参考:https://blog.csdn.net/sdutstudent/article/details/53783051 
*/
#include 
using namespace std;

const int maxn = 100000;
int aa[maxn];

int main()
{
	int i, j, k;

	k = 1000;  // 假设题目要找的是 0 ~ k 以内的全部素数 
	
	for (i=0;i

你可能感兴趣的:(C/C++,算法)