费马的小定理蟒蛇

时间:2014-05-18 18:02:40

标签: python

我正试图通过python实现Ferment的小定理。然而,返回的值并没有给我一个素数。任何帮助表示赞赏。 道歉,该定理指出,如果一个数字是素数,则随机数次,那么产生的数量少于它将给出pow(a,value,x)== 1.下面的代码是它的实现。

代码的目的是为函数生成位创建一个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

1 个答案:

答案 0 :(得分:1)

不知道定理是什么(请参阅我的评论),我仍然可以告诉您代码中存在一些问题。

  • 您首先拨打generatebits,这会生成一个随机数。那么如果little(x),则返回该值。但是,由于little(x)始终为true,因此此代码执行的操作是创建随机值并将其返回
  • 你内部发生的任何事情for循环完全没有效果。你所做的只是为一个永远不会被读取的变量a赋值,并调用一个返回你不读的值的函数