当获取一个素数时,将他所有的倍数标记为非素数,当遍历到一个数字没有被标记,说明没有比他小的素数因数,确定为素数。
例子:
从2开始遍历2到10000的所有整数,找到所有素数
int prime_size = 0;
int prime[10000];
int mark[10001];
void init(){
for(int i = 2; i <= 10000; i++){
if(mark[i])continue;
prime[prime_size++] = i;
for(int j = i*i; j<=10000; j+=i){
mark[j] = true;
}
}
}