Python应用程序,使10 ^ 300和10 ^ 301之间的随机素数

Shi*_*TCo 3 python random

我需要制作Python应用程序来制作10 ^ 300到10 ^ 301之间的随机素数,我用它做了但很慢.任何解决方案


import random , math
check_prime = 0

print "Please wait ..." def is_prime(n): import math n = abs(n) i = 2 while i <= math.sqrt(n): if n % i == 0: return False i += 1
return True

while check_prime == 0 : randomnumber = random.randrange(math.pow(10,300),math.pow(10,301)-1) if is_prime(randomnumber): print randomnumber break

Joh*_*n Y 6

首先要做的事情是:不要使用math.pow(),因为它只是C浮点函数的包装器,而且你的数字太大而无法准确表示为浮点数.使用Python的指数运算符,即**.

第二:如果您使用的是具有gmpy版本的平台,请使用它进行素性测试.

第三:正如eumiro指出的那样,你可能正在处理太大的问题空间,以便有任何真正快速的解决方案.