python - python中的随机素数

标签 python random generator list-comprehension primes

我目前将 ↓ 设置为我的 randprime(p,q) 函数。有什么方法可以通过genexplistcomp 之类的东西来压缩它吗?这是我的功能:

n = randint(p, q)
while not isPrime(n):
    n = randint(p, q)

最佳答案

最好只生成素数列表,然后从该行中进行选择。 照原样,对于您的代码,如果区间中没有素数,或者如果 randint 总是选择非素数,那么它很可能会陷入无限循环,然后 while 循环永远不会结束。

所以这可能更短且麻烦更少:

import random
primes = [i for i in range(p,q) if isPrime(i)]
n = random.choice(primes)

这样做的另一个好处是,如果区间中没有素数,就不会出现死锁。如前所述,这可能会很慢,具体取决于范围,因此如果您提前缓存素数,速度会更快:

# initialising primes
minPrime = 0
maxPrime = 1000
cached_primes = [i for i in range(minPrime,maxPrime) if isPrime(i)]

#elsewhere in the code
import random
n = random.choice([i for i in cached_primes if p<i<q])

同样,进一步的优化是可能的,但这在很大程度上取决于您的实际代码……而且您知道他们对过早优化的看法。

关于python - python中的随机素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27831283/

相关文章:

python - Django - 在管理中保存时更新另一个模型

python - 使用 Enum Functional API 的意外警告 - PyCharm 错误

python - 如何使用 for 循环动态创建数据帧

c# - 如何将给定数组中的数字随机返回到标签中

Python:写入文件时的内存使用情况(生成器与列表)

python - 有没有办法在 python 中压缩列表/元组的内部元素?

python : how to speed up this file loading

c++ - 无法在 Visual C++ 2010 中使用 default_random_engine 字段创建类

java - 如何解决从四个随机生成的数字中查找最小数字时偶尔出现的错误答案

python - 有时我想要一个发电机