[英]checking whether a number is prime
我正在嘗試創建一個 for 循環,遍歷范圍內的數字並檢查它們是否可整除。 這是我的代碼:
user_input = input("pick a number")
for i in range(1, int(user_input)):
if int(user_input) % i == 0 and i != 1 and i != int(user_input):
print("Your number is prime")
else:
print("your number is not prime")
即使對於素數,第二個條件也會繼續執行。 我究竟做錯了什么?
當您使用 for 循環時,您正在迭代range(1, int(user_input))
的次數,因此您的if/else
會一遍又一遍地執行,並且在每次迭代中都會打印一些內容。 相反,您只想在完成后打印。
要實現這一點,您需要使用 boolean True/False 變量來跟蹤數字是否為質數,並在for
循環中相應地設置它。
user_input = input("pick a number")
is_prime = True
for i in range(2, int(user_input)):
if int(user_input) % i == 0 :
is_prime = False
break #break out of the for loop since the number isn't prime
if is_prime:
print("Your number is prime")
else:
print("your number is not prime")
其他一些小的變化:
and i != 1
因為超過1
的任何迭代都將無法通過此測試並且您想檢查迭代中的每個數字and i != int(user_input)
因為在你的迭代中你永遠不會達到這個數字range()
不包括最高數字。break
,這樣我們就不會浪費迭代來檢查它是否更不是素數。您的代碼范圍存在一些問題,應該是 2 而不是 1。一旦條件滿足,就添加一個 break 語句。
user_input = input("pick a number")
user_input = int(user_input)
for i in range(2, user_input):: #for i in range(2, int(user_input /2)+1) also works
if (user_input % i) == 0:
print("Your number is prime")
break
else:
print("Your number is not a prime")
更簡單的方法
user_input = int(input("pick a number"))
result = all(user_input % i for i in range(2, user_input))
if result:
print("Your number is prime")
else:
print("Your number not a is prime")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.