python - Python中的下一个质数
问题描述
我是 Python 的初学者,我正在练习编写我看到的这个问题的代码。需要下一个素数,但输入有限制。我已经搜索了类似的问题,但我的代码仍然无法正常工作。希望你能帮忙。谢谢!
我遇到的问题是当我输入 32 时,当下一个素数为 37 时,结果显示为 33...
到目前为止,这是我的代码。
num = int(input("Enter a positive number:"))
import math
def nextprime(n):
if n < 0:
raise ValueError
for next in range(n + 1, n +200):
if next > 1:
for i in range(2, next):
if (next % i) == 0:
break
else:
return next
解决方案
在您的代码中,当您到达提醒不为零的数字时,您会返回该数字。您需要为每个数字设置一个标志,此标志为 True,如果可以将标志转换为 False,则标志未转换为 false 的第一个数字返回该数字,如下所示。
不要使用next
,因为这是一个内置函数。
试试这个:(我不改进你的代码)
def nextprime(n):
if n < 0:
raise ValueError
for i in range(n + 1, n +200):
if i > 1:
pr = True
for j in range(2, i):
if (i % j) == 0:
pr = False
break
if pr:
return i
return 'not found'
您也可以尝试此代码,编写函数来检查一个数字是否为素def is_prime
数,然后输入 num find min
number 的较大数字。(来自这个线程的这个答案。)
def is_prime(x):
return all(x % i for i in range(2, x))
def next_prime(x):
return min([a for a in range(x+1, 2*x) if is_prime(a)])
print(next_prime(32))
您也可以sympy
像下面这样使用:(this answer from this thread。)
from sympy import *
nextprime(32)
推荐阅读
- sql - SSIS 性能与使用从 SQL Server 到 Oracle 的链接服务器的 OpenQuery
- python - 如何用 statsmodels Logit 中的二项式变量解释截距和系数
- python - 如何通过 gunicorn/wsgi 运行独立的 python 脚本?
- sendgrid - 自动回复返回到 Sendgrid
- image - 如何计算sRGB中一对色度坐标x,y的Y的最大可能值
- c# - 尝试填充 DataSet 时出现“ORA-03115:不支持的网络数据类型或表示”
- python - Selenium webdriver isn't able to clear a field, but is able to send_keys to it
- c++ - own tuple implementation segfaults on gcc while works in clang
- docker - Docker Compose 总是强制构建一个服务
- python - 打印新列错误值的长度与索引的长度不匹配