[英]Python- checking a number to see if it's a prime number by using divisors
我必須編寫一個程序,通過檢查range(1,num)中的除數來檢查數字是否為質數。 (例如,如果輸入為5,則程序將檢查2是除數,然后是3,然后是4)。 有人可以解釋一下如何將最后一個表達式放在程序中(“這是質數”打印函數),以便它僅出現在“ for”循環中的“ else”函數之后,而不出現在“ if div = = 0:“語句? 謝謝!
while True:
num = int(input("Enter a positive number to see if it's a prime number: "))
if num > 1:
break
elif num == 1:
print("1 is technically not a prime number.")
else:
print("Number cannot be negative- try again.")
for num1 in range(2,num):
div = num%num1
if div == 0:
print(num1,"is a divisor of",num,"... stopping.")
print(num,"is not a prime number.")
break
else:
print(num1,"is NOT a divisor of",num,"... continuing")
print(num,"is a prime number!")
有很多方法可以做到這一點:
is_prime = True # a boolean flag
for num1 in range(2,num):
div = num%num1
if div == 0:
print(num1,"is a divisor of",num,"... stopping.")
print(num,"is not a prime number.")
is_prime = False
break
else:
print(num1,"is NOT a divisor of",num,"... continuing")
if is_prime:
print(num,"is a prime number!")
for-else
使用! for num1 in range(2,num):
div = num%num1
if div == 0:
print(num1,"is a divisor of",num,"... stopping.")
print(num,"is not a prime number.")
is_prime = False
break
else:
print(num1,"is NOT a divisor of",num,"... continuing")
else:
print(num,"is a prime number!") # will execute only when for-loop ends
Python的for
表達式具有可選的else
子句 :
循環語句可以包含else子句; 當循環通過用盡列表而終止時(帶有for)或條件變為假(具有while時),則執行此命令,但當循環由break語句終止時,則不執行該命令。
因此,您的代碼應如下所示:
while True:
num = int(input("Enter a positive number to see if it's a prime number: "))
if num > 1:
break
elif num == 1:
print("1 is technically not a prime number.")
else:
print("Number cannot be negative- try again.")
for num1 in range(2,num):
div = num%num1
if div == 0:
print(num1,"is a divisor of",num,"... stopping.")
print(num,"is not a prime number.")
break
else:
print(num1,"is NOT a divisor of",num,"... continuing")
else:
print(num,"is a prime number!")
假設您已將除數除以1,那么您所要做的就是計算除數以外的除數(數字本身)。 因此,為了保持您的代碼結構,我添加了一個計數器。
while True:
num = int(input("Enter a positive number to see if it's a prime number: "))
if num > 1:
break
elif num == 1:
print("1 is technically not a prime number.")
else:
print("Number cannot be negative- try again.")
for num1 in range(2,num):
div = num%num1
count = 0
if div == 0:
print(num1,"is a divisor of",num,"... stopping.")
print(num,"is not a prime number.")
break
else:
count += 1
print(num1,"is NOT a divisor of",num,"... continuing")
if count == 1:
print(num,"is a prime number!")
我添加了一行sys.exit()
while True:
num = int(input("Enter a positive number to see if it's a prime number: "))
if num > 1:
break
elif num == 1:
print("1 is technically not a prime number.")
else:
print("Number cannot be negative- try again.")
for num1 in range(2,num):
div = num%num1
if div == 0:
print(num1,"is a divisor of",num,"... stopping.")
print(num,"is not a prime number.")
sys.exit()
else:
print(num1,"is NOT a divisor of",num,"... continuing")
print(num,"is a prime number!")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.