Python-确定整数是否为素数?输出打印素数和非素数
请记住,这是在Python-确定整数是否为素数?输出打印素数和非素数,python,primes,Python,Primes,请记住,这是在for循环之前的if语句中。使用它,整个程序每隔一个整数输出一次。但对于整数0和1: 它输出: 0 isn't a prime number 0 is a prim number 1 isn't a prime number 1 is a prime number 一旦确认低于2,您需要停止: 仅使用以下一项中的一项 如果正在循环,要继续下一次迭代: 0 is a prime number 1 is a prime number 如果num
for
循环之前的if
语句中。使用它,整个程序每隔一个整数输出一次。但对于整数0和1:
它输出:
0 isn't a prime number
0 is a prim number
1 isn't a prime number
1 is a prime number
一旦确认低于
2
,您需要停止:
仅使用以下一项中的一项
如果正在循环,要继续下一次迭代:
0 is a prime number
1 is a prime number
如果num<2:
打印(num,“不是质数”)
持续
如果您在函数中,并且希望返回一个值:
if num < 2:
print(num, "isn't a prime number")
continue
如果num<2:
打印(num,“不是质数”)
返回错误
如果您不是在循环或函数中,并且希望终止程序:
if num < 2:
print(num, "isn't a prime number")
return False
如果num<2:
打印(num,“不是质数”)
sys.exit()
检查num<2
时不返回。您可以更改为:
if num < 2:
print(num, "isn't a prime number")
sys.exit()
初始IF条件之后没有return语句或else子句
也只是一个快速提示,不需要检查每个整数的模数。我相信只需要一半的数字。我已经有一段时间没有编写素数算法了。缩进问题。如果第一个
if
有效,则应终止。您没有缩进for
循环和else
块;Pythonfor
循环也可以有一个else
块。当你没有在for
循环中使用break
时,它会执行,你的代码在这里使用了break
循环,但它仍然告诉你0
和1
是素数,因为for
循环仍然针对这些数字运行。@MartijnPieters我认为else
对于for
是有意义的。如果,经过最小改动的更干净的解决方案不是在第一个循环中退出吗?@ReutSharabani:是的,或者for
与的循环需要缩进,否则
需要缩进。是的,我忘记了for循环可以输入到for循环中。我没有意识到需要else语句才能运行for循环函数,而不是同时运行。最多(包括)数字的平方根就足够了。例如,当测试100以下的素数时,最多测试10就足够了,因为10*10已经覆盖了整个范围。你也可以给range()
一个步长值2,并且只测试奇数。对于范围(3,int(num**0.5)+1,2)中的x:
并分别处理2
。教授说不使用任何数学函数,因此严格逻辑。范围没有定义的限制,但是用户输入的数字。因此,为什么它代表范围(2,num)内的x:@gabestanley:教授可能是想不使用数学
模块。如果不能使用幂运算符,%
模运算符也是一个“数学函数”。MarkII,我的意思是你可以限制范围的上限,如果你确定11不能被2或3除,那么测试4,5,6,7,8,9和10是没有意义的,因为4*4将大于11(当你测试2和3的可除性时,2*4和3*4被覆盖)是的,中断是为了确保当整数不是素数时操作结束,否则它将打印它不是素数而不是素数。您可能希望缩进最后的else
块,否则它属于for
循环,而不是if
@BobChao87它属于for
循环For
可以在python中有一个else
。@JuniorCompressor这对我来说是新闻!很高兴知道,这在将来可能会很有帮助。
if num < 2:
print(num, "isn't a prime number")
sys.exit()
if num < 2:
print(num, "isn't a prime number")
return
if num < 2:
print(num, "isn't a prime number")
else:
for x in range(2, num):
if num % x == 0:
print(num, "isn't a prime number")
break
else:
print(num, "is a prime number")