首页 > 解决方案 > 在python中制作素数但在打印else语句时出错

问题描述

我正在制作程序来检查它是否是素数。但是 else 语句不起作用。

val = int(input("Enter Number here"))
if (val % 2 == 0):
    print("Not Prime")

elif (val % 2 != 0):
    for i in range(3, val, 2):
            if (val % i == 0):
                print("Not Prime")
else:
    print("Prime")

另外,如果我尝试使用 elif(val != 0) 删除 else 语句,则没有输出

标签: python

解决方案


还值得注意的是,您只需要检查直到 val 的平方根的数字,而不是 val 来查看它是否为素数。这将使您的代码更有效率。

在 val=1, 2 和其他此类情况下,一些答案也会失败。

这是一个正确的解决方案:

val = int(input("Enter Number here: "))
prime = True
if val==1:
    prime=False
elif val % 2 == 0 and val!=2:
  prime = False
else:
  for i in range(3, int(val**(1/2))+1, 2):
    if val % i == 0:
      prime = False
      break

if prime:
  print("Prime")
else:
  print("Not prime")

推荐阅读