在提供的范围内仅创建一个随机素数

Naf*_*yar 5 python

我想在任何提供的范围内只创建一个随机素数.我有这个代码:

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)

但我的程序提供了一组素数.我想修改我的代码并在任何提供的范围内只创建一个随机数,但我找不到如何做.请帮忙.

Eul*_*lar 1

你的程序几乎是正确的,只要随机选择一下就可以了。但我可以指出这浪费了很多时间。我以有效的方式写了同样的内容

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)