繁体   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