/*素數篩選,判斷小於MAXN的數是否是素數。
*notprime是一張表,爲false表示是素數,true表示非素數
*/
const int MAXN=1000010;
bool notprime[MAXN];//值爲false表示素數,值爲true表示非素數
void init()
{
memset(notprime,false,sizeof(notprime));
notprime[0]=notprime[1]=true;
for(int i=2;i<MAXN;i++)
if(!notprime[i])
{
if(i>MAXN/i)continue;//防止後面i*i溢出(或者i,j用long long)
//直接從i*i開始就可以,小於i倍的已經篩選過了,注意是j+=i;
for(int j=i*i;j<MAXN;j+=i)
notprime[j]=true;
}
}
素數篩選(判斷
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.