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
块;Python
for
循环也可以有一个
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")