[英]Finding whether a number is prime or not python3
我編寫了一個代碼來確定一個數字是素數還是合數。 當我輸入一個素數時,代碼可以正常工作,但是當我輸入一個復合數時,output 是:
enter number: 100
The number is not prime.
The number is prime.
我不希望The number is prime
output 用於復合數輸入。 這是我的代碼:
print ('This program tells whether the number is prime or not')
print ('')
def prime(x):
if x < 2:
print('The number is not prime.')
else:
for n in range(2, x - 1):
if x % n == 0:
print('The number is not prime.')
break
print('The number is prime.')
i = input('enter number: ')
prime(int(i))
請告訴我我能做些什么來糾正它。
問題是縮進,你必須移動最后一行的縮進並在之后添加一個break
,所以嘗試使用:
print ('This program tells whether the number is prime or not')
print ('')
def prime(x):
if x < 2:
print('The number is not prime.')
else:
for n in range(2, x - 1):
if x % n == 0:
print('The number is not prime.')
break
print('The number is prime.')
break
i = input('enter number: ')
prime(int(i))
我明白為什么了。 if 之后你會錯過 else 。 嘗試這個:
print ('This program tells whether the number is prime or not')
print ('')
def prime(x):
if x < 2:
print('The number is not prime.')
else:
for n in range(2, x - 1):
if x % n == 0:
print('The number is not prime.')
break
else:
print('The number is prime.')
i = input('enter number: ')
prime(int(i))
if num > 1:
for n in range(2, x-1):
if x % n == 0:
print('The number is not prime.')
break
else:
print('The number is prime.')
else:
print('The number is not prime.')
只需在 for 循環中修復該縮進即可。 此外,這看起來更干凈。
這是解決此問題的推薦方法。
不要使用硬編碼的打印語句。
嘗試返回True
或False
。
def is_prime(x:str):
if x < 2:
return False
else:
for n in range(2, int(x/2)): # Use this for more speed
if x % n == 0:
return False
return True
現在您可以通過調用is_prime
function 來檢查數字是否為素數
print('Number is prime' if is_prime(6) else 'Number is not prime')
問題是,當您中斷循環時,會調用最后一個打印語句。 如果您使用return
語句結束 function,您將不會到達最后一個打印語句。
def prime(x):
if x < 2:
print('The number is not prime.')
else:
for n in range(2, x - 1):
if x % n == 0:
print('The number is not prime.')
return
print('The number is prime.')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.