我是Python初学者,看到这个问题,我正在练习编码,需要Next prime,但是输入有限制,我搜索过类似的问题,但是我的代码还是不行,希望大家能帮忙,谢谢!
我得到的问题是当我输入32的时候,结果显示33当下一个质数是37的时候...
这是我目前的代码。
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
5条答案
按热度按时间46qrfjad1#
在你的代码中,当你到达一个提醒不为零的数字时,你返回那个数字。你需要为每个数字设置一个标志,如果可以除,这个标志为True,如果可以除,这个标志转换为False,对于第一个标志不转换为False的数字,返回那个数字,如下所示。
不要使用
next
,因为这是内置函数。试试这个:(我不改进你的代码)
你也可以试试这个代码,写函数来检查一个数字是质数或不像
def is_prime
,然后为更大的数字,你输入num找到min
数字下一个. (这个答案从这个thread .)您也可以使用
sympy
,如下所示:* (此答案来自此thread。)*gxwragnw2#
kxxlusnw3#
一些离题提示:
1.正如user1740577提到的,不要使用
next
作为变量名1.尽可能避免使用
eval
,在这里可以,但在真实的项目中,这将导致大禁忌。1.将导入放在脚本的最顶端
1.考虑仅对迭代使用变量名
i
和j
。1.对于重复的
except
数据块,请使用(Error, Error)
至于你的问题的解决方法,如果你不介意的话,我做了一些调整
eit6fx6z4#
对@rajendra-kumbar中的代码进行了一些速度改进:
它速度大约是原来的两倍
dkqlctbz5#
你可以试试简单的方法: