簡體   English   中英

在python中生成素數但在打印else語句時出錯

[英]making prime number in python but getting error in printing the else statement

我正在制作程序來檢查它是否是素數。 但是 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 語句,則沒有輸出

嘗試這個。 我認為你想要你的 else 在所有的i都被使用之后。 可以在for循環后立即使用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")
            break
    else: # this else is not needed if the break is used above
        print("Prime")

解決邏輯問題的一種方法是將結果存儲在變量中並在最后檢查該變量:

val = int(input("Enter Number here: "))
prime = True
if val % 2 == 0:
  prime = False
else:
  for i in range(3, val, 2):
    if val % i == 0:
      prime = False
      break

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

還值得注意的是,您只需要檢查直到 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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM