素數篩 埃拉託斯特尼篩和尤拉篩

2021-10-11 02:29:24 字數 637 閱讀 6369

題目描述

給定乙個範圍 n,有 q 個詢問,每次輸出第 k 小的素數。

輸入格式

第一行包含兩個正整數 n,q分別表示查詢的範圍和查詢的個數。

接下來 q行每行乙個正整數 k,表示查詢第 k小的素數。

輸出格式

輸出 q 行,每行乙個正整數表示答案。

輸入輸出樣例

輸入100 512

345輸出

2357

11

點我測試**

#include

#include

using

namespace std;

const

int maxn=

1000010

;int primes[maxn]

,cnt;

bool num[maxn]

;void

get_primes0

(int n)

}void

get_primes

(int n)}}

intmain()

素數篩(快速篩) 愛拉托斯特尼篩法 尤拉篩

如果題目只需要判斷少量數字是否為素數,那麼可以直接列舉因子從2一直到sqrt n 看能否整除,當判斷的數量較大的,需要使用篩法進行處理。篩法求素數就是先認定所有的數是素數,再通過一些方法把合數踢掉。例項 class solution boolean prime new boolean n array...

埃拉託斯特尼篩法

質數又稱素數。指在乙個大於1的自然數中,除了1和此整數自身外,沒法被其他自然數整除的數。怎麼判斷n以內的哪些數是質數呢?厄拉多塞是一位古希臘數學家,他在尋找素數時,採用了一種與眾不同的方法 先將2 n的各數放入表中,然後在2的上面畫乙個圓圈,然後劃去2的其他倍數 第乙個既未畫圈又沒有被劃去的數是3,...

埃拉託斯特尼篩法

埃拉託斯特尼篩法,簡稱埃氏篩或愛氏篩,是一種由希臘數學家埃拉託斯特尼所提出的一種簡單檢定素數的演算法。要得到自然數n以內的全部素數,必須把小於等於根號n的所有素數的倍數剔除,剩下的就是素數。這是什麼意思呢?以100為例,我們先建立乙個擁有101 0 100 個數字的陣列。先使用最小的素數2,將所有2...