埃氏筛法
点击查看代码
#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已被筛除
}
}
}
}