gpt4 book ai didi

python - 在提供的范围内只创建一个随机素数

转载 作者:太空狗 更新时间:2023-10-30 00:48:41 25 4
gpt4 key购买 nike

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

print [x for x in range(5000, 5200)
if not [t for t in range(2, x)
if not x % t]]

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

最佳答案

我对 mathmax 解决方案的问题是,它完成了所有工作以找到 5000 到 5200 之间的素数,只是选择一个并扔掉其余的。在找到第一个质数之前,随机选择 5000 到 5200 之间的唯一数字可能更有效:

import random

minimum = 5000
maximum = 5200

next((x for x in random.sample(range(minimum, maximum), maximum - minimum) if not [t for t in range(2, x) if not x % t]), None)

这大约快了 18 倍。通过对我们的素性测试更聪明一点,我们可以获得另外 18 倍的改进:

next((x for x in random.sample(range(minimum, maximum), maximum - minimum) if not [t for t in [2] + list(range(3, int(x**0.5) + 1, 2)) if not x % t]), None)

请注意,使用 random.sample() 是因为它返回的结果与 random.shuffle() 不同,random.shuffle() 对列表进行适当的操作。如果您更喜欢 random.shuffle(),并且不在表达式中两次包含数字,您可以改为执行以下操作:

next((x for x in (lambda y: random.shuffle(y) or y)(list(range(5000, 5200))) if not [t for t in range(2, x) if not x % t]), None)

关于python - 在提供的范围内只创建一个随机素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37741125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com