2012-02-09 31 views
-2

這是一個'真正'的任務,可以寫在任何語言(例如C/C++)大數字怎麼樣? (素性測試)

所以,我的任務是'生成'隨機數的長度超過50位數字= 200)?

然後,我必須在素數測試中檢查這個數字。

那麼,這個任務是「真實的」,它將消耗多少時間/資源?

另一種方法是生成特殊的類質Mersenn號碼或其它號碼(可以使用類?)

+3

你是什麼意思「真實」?你問我們這是否是功課嗎?你應該知道...... – PlasmaHH 2012-02-09 11:31:45

+0

證明一個數字是素數是難以置信的困難(好,微不足道但非常慢)。 GMP(GNU多精度算術庫)有一個可能的主要功能,可以運行測試(你可以告訴它有多少iirc)來告訴你一個數字是否可能是主要的。 http://gmplib.org/manual/Number-Theoretic-Functions.html#Number-Theoretic-Functions 使用起來有點費勁,因爲它確實是C語言,但是您可以從C++中使用它。 – BoBTFish 2012-02-09 11:35:04

+0

'真實' - 任務,只需要一臺電腦,耗時不到一個小時。個人使用,是的。 – gaussblurinc 2012-02-09 12:02:54

回答

2

有一些有效的概率算法用於素性測試,如Miller-Rabin,通常用於這些目的。

選擇一個隨機數並使用隨機算法測試素數是有效的,因爲素數密度保證您對於n位數字需要選擇n個數字進行測試。