埃氏筛法

点击查看代码
#include<cstdio>
#pragma warning(disable:4996)

//埃氏筛法,筛选2~maxn-1的素数
const int maxn = 101; //表长
int prime[maxn], pNum = 0; //prime[]存放所有素数,pNum是素数个数
bool p[maxn] = { 0 }; //p[i]=true表示i不是素数,已被筛除。必须初始化全部都是素数(算法需要2这个素数启动)
void Find_Prime() {
	//从2开始,枚举2~maxn内的数
	for (int i = 2; i < maxn; i++) {
		if (p[i] == false) { //i没有被筛除,是素数(算法由2这个素数启动)
			prime[pNum++] = i; //将i存入prime[]中
			for (int j = i + i; j < maxn; j += i) {
				//在2*i~maxn中,筛去所有i的倍数
				p[j] = true; //i是j的因数,因此j不是素数,p[j]设为true表示j已被筛除
			}
		}
	}
}
posted @ 2022-09-28 22:50  zhaoo_o  阅读(12)  评论(0编辑  收藏  举报