我正试图通过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
答案 0 :(得分:1)
不知道定理是什么(请参阅我的评论),我仍然可以告诉您代码中存在一些问题。
generatebits
,这会生成一个随机数。那么如果little(x)
,则返回该值。但是,由于little(x)
始终为true,因此此代码执行的操作是创建随机值并将其返回for
循环完全没有效果。你所做的只是为一个永远不会被读取的变量a
赋值,并调用一个返回你不读的值的函数