2014-05-18 35 views
-4

我想通過python實現Ferment的小定理。然而,返回的價值並不能給我一個黃金。任何幫助表示讚賞。道歉,這個定理指出,如果一個數字是素數,那麼任意數字產生的數量少於它給pow(a,value,x)== 1的隨機次數。下面的代碼是它的一個實現。費馬的小定理python

代碼的目的是爲函數生成位創建一個16位整數,並通過定理運行它來證明它是否爲素數,如果其爲素數,則返回值,如果不調用該函數generatebit()再次。感謝您花費的時間

import random    
def generatebit(): 
    x = random.getrandbits(16) 
    x = int(x) 
    if little(x): 
     return x 




def little(x): 
value = x -1 
for i in xrange(50000): 
     # check for a total of 50000 times to reduce chances 
     a = random.getrandbits(15) 
     if pow(a,value,x) != 1: 
      generatebit() 
      break 

return True   


a=generatebit() 
print a 
+4

我想你會大大延長您的目標受衆,如果你插入一個什麼發酵的小定理不小的段落,你會因此想到,你會得到什麼,而不是... – Nicolas78

+2

請修正縮進,使你的代碼是至少可運行 – Pavel

+2

你的意思[費馬小定理(HTTP:// en.wikipedia.org/wiki/Fermat's_little_theorem),不是嗎? – Pavel

回答

1

不知道定理是什麼(請參閱我的評論),我仍然可以告訴您代碼中存在一些問題。

  • 你第一次打電話generatebits,它會產生一個隨機數。那麼如果little(x),則返回該值。然而,因爲little(x)始終是真實的,這是什麼代碼所做的就是創建一個隨機值,並返回其
  • 內發生,你無論for循環是完全沒有效果。你要做的就是一個值分配給永遠不會被讀取變量a,並且調用返回一個值的函數,你不看