簡體   English   中英

查找一個數字是否是素數python3

[英]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 循環中修復該縮進即可。 此外,這看起來更干凈。

這是解決此問題的推薦方法。
不要使用硬編碼的打印語句。
嘗試返回TrueFalse

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.

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