篩選素數演算法

2021-10-08 16:24:51 字數 863 閱讀 4839

const

int len =

10000000

;int isprime[len]

;void

init()

}}}

題目描述

多多知道質數是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。

現在他想知道在乙個閉區間內,有多少個質數?他會詢問多次,請你回答他。

輸入描述:

第一行輸入乙個正整數 t,代表詢問次數 (1 ≤ t ≤ 100000)

接下來 t 行,每行輸入兩個正整數 a,b 表示查詢範圍為 [ a,b ] (1 ≤ a ≤ 107,a ≤ b ≤ 107)

輸出描述:

對於每次詢問,輸出乙個整數,表示在 [ a,b ] 範圍內質數的個數

示例1

3110

1100

11000

4

25168

#include

using

namespace std;

const

int len=

10000000

;int isprime[len]

;int sum[len]

;void

init()

}}for(

int i=

2;i<=len;i++)}

intmain()

return0;

}

質數篩選 素數篩選法

int prime 100010 void prime for int i 1 i i 1000000 i define size 1000000 int main 元素值為0代表是素數 int prime size int pos 0 int flag for int i 2 i size i p...

素數篩選法

篩選素數法 搞acm的都知道,素數是數論中必不可少的知識,也是必須要掌握的,關於素數的篩選有好幾種方法,下面一一道來,寫的不好還請提出。第一種是最常規的做法 int main if j sqrt i cout 這種方法肯定是比第一種快的,至於快多少大家可以比較一下,注意到裡面的for迴圈是到sqrt...

素數篩選 總結

第一種 直接暴力,在這就不說了 第二種 埃氏篩法 能處理1e6以下的資料 首先,將2到n範圍內的所有整數寫下來。其中最小的素數為2,將表中所有2的倍數都劃去。表中剩餘的最小數字是3,不能被更小的數整除,所以也是素數,將表中所有3的倍數也劃去。依此類推,如果表中剩餘的最小數字為m時,m就是素數,再將m...