梅森素數python實現
阿新 • • 發佈:2021-01-16
這裡寫目錄標題
問題描述
如果一個數字的所有真因子之和等於自身,則稱它為“完全數”或“完美數”
例如:6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + 14 早在公元前300多年,歐幾里得就給出了判定完全數的定理: 若 2^n - 1 是素數,則 2^(n-1) * (2^n - 1) 是完全數。 其中 ^ 表示“乘方”運算,乘方的優先順序比四則運算高,例如:2^3 = 8, 2 * 2^3 = 16, 2^3-1 = 7 但人們很快發現,當n很大時,判定一個大數是否為素數到今天也依然是個難題。 因為法國數學家梅森的猜想,我們習慣上把形如:2^n - 1 的素數稱為:梅森素數。 截止2013年2月,一共只找到了48個梅森素數。 新近找到的梅森素數太大,以至於難於用一般的程式設計思路窺其全貌,所以我們把任務的難度降低一點: 1963年,美國伊利諾伊大學為了紀念他們找到的第23個梅森素數 n=11213,在每個寄出的信封上都印上了“2^11213-1 是素數”的字樣。 2^11213 - 1 這個數字已經很大(有3000多位),請你程式設計求出這個素數的十進位制表示的最後100位。
思路分析及程式碼實現
這道題用python來實現的話確實很簡單,直接把數字轉成字串然後切片取出後一百位就可以了
print(str(2 ** 11213 - 1)[-100:])