孿生素數(素數打表,字首和)

2021-08-21 12:07:33 字數 1011 閱讀 9961

time limit: 2 sec  memory limit: 128 mb

2023年5月華人數學家張益康在《數學年刊》中發表的一篇**解決世界性數學難題——孿生素數猜想。

所謂孿生素數指的就是這種間隔為 2 的相鄰素數,它們之間的距離已經近得不能再近了,就象孿生兄弟一樣。最小的孿生素數是 (3, 5),在 100 以內的孿生素數還有 (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61) 和 (71, 73),總計有 8 組。但是隨著數字的增大,孿生素數的分布變得越來越稀疏,尋找孿生素數也變得越來越困難。那麼會不會在超過某個界限之後就再也不存在孿生素數了呢?

給定乙個n,你程式設計求出n之前的孿生素數的個數。

多組測試資料,每行乙個n(0最後以0結束

每組測試資料輸出佔一行,該行為n範圍內所有孿生素陣列數。

最後的0不用處理。

10

1000

2

8

這裡就運用到了一種字首和的思想。具體就是用乙個全域性陣列ans,用ans[i]來儲存前i個數中所包含的1出現的次數之和 。而且提前算好ans[n]的值。那麼每組資料就可以直接用ans[n]來計算。時間複雜度就會大大降低。

這是我的**

#include #include using namespace std;

int a[1001000]=,ans[1001000]=;

int cc(int n)

int main()

ans[1]=0;

for(i=2;i<1000100;i++)

ans[i]=cc(i)+ans[i-1];

for(;;)

return 0;

}

我覺得字首和的思想就是一種預處理,是一種以空間換時間的做法。就是先提前求得ans[i],儲存下來,以後計算的時候直接用。動態規劃就經常用到這樣的手段。

另一道字首和的題    :

nyoj 26 孿生素數問題 打表

記憶體限制 64mb 時間限制 3000ms special judge no accepted 10 submit 43 寫乙個程式,找出給出素數範圍內的所有孿生素數的組數。一般來說,孿生素數就是指兩個素數距離為2,近的不能再近的相鄰素數。有些童鞋一看到題就開始寫程式,不仔細看題,咱們為了遏制一下...

美素數 素數打表

description 小明對數的研究比較熱愛,一談到數,腦子裡就湧現出好多數的問題,今天,小明想考考你對素數的認識。問題是這樣的 乙個十進位制數,如果是素數,而且它的各位數字和也是素數,則稱之為 美素數 如29,本身是素數,而且2 9 11也是素數,所以它是美素數。給定乙個區間,你能計算出這個區間...

利用孿生素數判斷素數

思路參見 孿生素數 所謂孿生素數指的是間隔為 2 的相鄰素數。大於6以上的孿生素數,p 1和p 1為素數,則p 1和p 1一定為奇數,則p一定為偶數,即p為2的倍數 p 1 p p 1為連續的自然數,他們一定有乙個是3的倍數,p 1和p 1為素數,則他們不為3的倍數,即p也為3的倍數 所以p一定為2...