第19章 你們的超算是不是不太行啊?(第1/3 頁)
當然,儘管是確定了閱讀順序,林楓也沒有馬上開始。
任何星辰大海那都是遙遠的夢想,想要追求遙遠的夢想這沒什麼。
但前提是要在此之前不需要為物質而煩惱。
想想那令人壓抑的信用卡賬單,林楓就一個頭兩大。
林楓現在還得為物質奔波。
「去碼頭整點薯條.jpg」
林楓記得當時加州大學洛杉磯分校高效能運算實驗室可是在第一時間表示他們已經安排超算叢集開始驗證2^-1和2^-1是否是梅森素數了。
怎麼這麼久還沒出結果呢?
雖然說漫無目的地去尋找梅森素數挺困難的。
但要透過超級計算機驗證一個數是不是梅森素數還真不費勁。
一般來說,要驗證 2^ - 1 是否是素數。
直接計算出這個數並檢查它是否有其他因數是最容易想到的思路。
但這明顯不可行。
像是2^ - 1這種超大數的位數太多,如果暴力因式分解挨個試肯定無法在合理的時間內完成。
不過也不是毫無辦法。
盧卡斯-萊默測試可以有效簡化這個過程。
在藉助這個方法的情況下完全透過遞迴迭代序列驗證是否滿足特定條件。
具體步驟也不復雜。
此前在寫論文的時候林楓還特別瞭解過這方面。
先是初始化設 S_0 =4 ,而後遞迴:計算 S_(n+1) = S_(n^2 - 2 )
模 2^p - 1 ,運算從 n = 1開始,直到 n = p - 2 為止。
如果最終結果 S_(p-2) 是 0,那麼 2^p - 1 就是一個素數;否則它不是素數。
聽起來依舊是有點麻煩的。
但對於超級計算機來說這完全是小兒科好不好。
而且由於盧卡斯-萊默測試的複雜度是線性時間複雜度,即 o(p),這意味著計算的時間與 p 成正比。
對於2^ - 1來說,只需要執行 次迴圈,每次計算一個模運算。
盧卡斯-萊默測試每次迭代中包含的運算量比較複雜,涉及到大整數的平方和模運算。
不過估算的話也不是沒辦法。
可以粗略假設每次迭代進行模運算需要進行約 10^6次計算。
這樣計算的話,總的計算次數是:
*10^6 約等於 7.42*10^13次計算。
如果計算機每秒可以執行 10^15次計算。
則總時間為 0.0742 秒。
理論上,一臺超級計算機可以在不到 0.1 秒的時間內驗證 2^ - 1 是否是一個梅森素數。
到林楓這卻這麼久還沒出結果?
只能說實屬正常。
畢竟林楓估算時是按照一臺超算全部算力都用於驗證這樣情況進行的估算。
但如果用來驗證林楓這些成果動用的並不是全部算力,那麼實際速度往往要大打折扣。
這麼久還沒出結果,林楓估計實際分配的算力額甚至可能連這臺超算0.01%的算力都不到。
不然,但凡是分配的算力多一點,林楓估計也早就搞完驗證了。
雖然情有可原。
但林楓現在可是等著這兩組梅森素數快快透過驗證然後搞一波50萬美元的資金呢。
結果現在這麼拖沓可還行。
搞錢這麼慢,豈不是影響林楓奔向星辰大海的速度。
而且眼看著信用卡賬單越積越高,林楓不能不著急