参照算法笔记P162,乙级1013
首先确定2是素数,那么2的倍数一定不是素数,标记它们。
3未被标记,则3是素数,那么那么3的倍数一定不是素数,标记它们。
4已被标记,不是素数。
5未被标记,则5是素数,那么5的倍数一定不是素数,标记它们。
。。。
const int maxn = 1000001;
int prime[maxn], num = 0;
bool p[maxn] = {0};
void Find_Prime(int n) {
for(int i = 2; i < maxn; i++) {
if(p[i] == false) {
prime[num++] = i;
for(int j = i + i; j < maxn; j += i) {
p[j] = true;
}
}
}
}