我想在任何提供的范围内只创建一个随机素数.我有这个代码:
print [x for x in range(5000, 5200)
if not [t for t in range(2, x)
if not x % t]]
Run Code Online (Sandbox Code Playgroud)
但我的程序提供了一组素数.我想修改我的代码并在任何提供的范围内只创建一个随机数,但我找不到如何做.请帮忙.
你的程序几乎是正确的,只要随机选择一下就可以了。但我可以指出这浪费了很多时间。我以有效的方式写了同样的内容
import random
from math import sqrt
def prime(x):
if x%2==0:return False
elif any(x%i==0 for i in xrange(3,int(sqrt(x))+1,2)):return False
else:return True
prime_list=[x for x in xrange(5000,5200) if prime(x)]
print random.choice(prime_list)
Run Code Online (Sandbox Code Playgroud)