2017-04-09 36 views
0

我想用代碼來尋找一些有趣的Wilson Primes,並讓我回到編碼的擺動中,但是,我發現當我嘗試分割172 ! +1由173它給我一個溢出錯誤。這裏是我使用的代碼:這時候我跑給我在Python中潛水大數時出現溢出錯誤

import math 
x = 2 
while x < 1000: 
    if math.factorial(x-1) + 1 % x == 0 and (math.factorial(x-1) + 1/5) % x == 0 : 
     print(x) 
    x += 1 

5

13

OverflowError: integer division result too large for a float

我改變了代碼,並發現,一旦數173作爲X發生錯誤。任何人都可以讓我知道爲什麼發生這種情況?我環顧四周,但只找到答案,說在Python中使用的數字的大小沒有限制。在此先感謝

回答

1

的問題是不是階乘,這是你的計算

(math.factorial(x-1) + 1/5) % x 

由於x是一個整數,階乘返回一個整數。但是,Python 3中的1/5返回浮點值0.2。向float中添加一個整數將返回一個整數,因此Python會嘗試將factorial轉換爲float。

但是,Python 3的整數可以是任意大小,但這不適用於浮點數。浮點值僅限於計算機的數字處理器,通常爲8個字節,並且具有最大尺寸。這個大小超過了,所以Python返回一個錯誤。

如果你的意思是添加一個階乘,然後除以5,那筆,然後拿模量x,你應該添加的括號中的整數除法運算符//而不是浮除法運算/。我不確定你正在嘗試做什麼,所以我無法爲你糾正你的代碼。但嘗試運營商//