素数专题
素数筛法
根据定义:一个自然数,如果不能被他平方根以内的所有素数整除,则是素数
#include <iostream>
#include <cstring>
using namespace std;
const int MAX_SIZE = 10000;
char prime[MAX_SIZE + 1];
int main()
{
int i,j;
//2是素数,其倍数都是偶数,可通过程序过滤
for(i = 3; i <= sqrt(MAX_SIZE); i++)
if(!prime[i])
{//筛选从种子的平方开始,其平方以内的数均已被前面的素数筛过了(j = i*i)
for(j = i * i; j <= MAX_SIZE; j += 2 * i)
//步长用种子的二倍,若用种子做步长,则有一半为偶数
prime[j] = 1;
}
for(i = 2; i <= MAX_SIZE; i++)
if(i % 2 && !prime[i])
cout<<i<<" ";
return 0;
}


浙公网安备 33010602011771号