第n小的質數

2022-08-10 14:18:17 字數 1656 閱讀 9221

這是我第一次發題解,有點小激動。。。

首先題目:

總時間限制: 

1000ms 記憶體限制: 65536kb

描述      輸入乙個正整數n,求第n小的質數。

輸入            乙個不超過10000的正整數n。

輸出           第n小的質數。

樣例輸入    10

樣例輸出    29

第一次編寫的**:

1 #include2

using

namespace

std;

3int

main()418

}19 printf("%d"

,s);

20return0;

21 }

判斷1~n能否整除n,還判斷可以的個數。很明顯,超時了。。。

第二次嘗試:

1 #include2

using

namespace

std;

3int

main()414

if(s==n)

1519}20

return0;

21 }

又超時。。。

第三次:

1 #include2 #include3

using

namespace

std;

4int

main()517

if(s==n)

1822}23

return0;

24 }

這次是判斷2~sqrt(n)能否整除n,精簡很多,沒有超時。

還得多練基本功,精簡演算法。。。

差不多一年過去了,不小心又翻到這篇題解,還是感覺自己改變了很多呀(變頹了)。雖然noip沒有一等獎,但應該是看**看到2點半的原因吧。

還是補充乙個線性篩素數的演算法吧。

1 #include2 #include3

using

namespace

std;

4const

int maxn=10000005;5

intcheck[maxn],prime[maxn];

6int

main()719

if(m==n)

2024

}25 }

(雖然這種方法也不夠快,打表才是最快的呀。。。)

首先得把表打出來

1 #include2 #include3

using

namespace

std;

4const

int maxn=10000005;5

intcheck[maxn],prime[maxn];

6int

main()719

for(int j=0;jj)

2024

}25 }

然後。。。

1 #include2

using

namespace

std;

3int a[10005]=;

404int

main()

405

早知如此絆人心 何如當初莫相識。

noi 8163 第n小的質數

總時間限制 1000ms 記憶體限制 65536kb 描述 輸入乙個正整數n,求第n小的質數。輸入乙個不超過10000的正整數n。輸出第n小的質數。樣例輸入 10 樣例輸出 29 基本版 noi 8163 includeusing namespace std int main b 10001 int...

NOI 44 第n小的質數 C

質數,又稱素數,定義為在大於1的自然數中,除了1和它本身以外不再有其他因數的數稱為質數 驗證乙個數是否是素數,最常用的方法是 給定乙個大於2的數,對這個數求平方根,如果這個數能被從0到平方根的數中任意乙個數整除,那麼這個數就是不是質數,否則這個數就是質數。原理是 如果乙個數不是質數,一定能分解成兩個...

第n小的醜數

挑戰 獲得乙個醜數很容易,因為醜數可以通過 2x 3y 5z 獲得,同時任意醜數乘以 2 3 5 也是乙個醜數。但是如何獲得第 n 小的醜數呢?當 n 小於等於 6 時,第 n 小的醜數就是 n 本身 但 n 大於 6 時,需要通過前 6 個已知的醜數,從第 7 小的醜數開始計算,一直計算到第 n ...