查找一个数字是否为素数python3

查找一个数字是否为素数python3,python,python-3.x,Python,Python 3.x,我已经写了一段代码来找出一个数字是素数还是复合数。 当我输入素数时,代码工作正常,但当我输入复合数时,输出为: enter number: 100 The number is not prime. The number is prime. 我不希望复合数字输入的数字是素数。 这是我的密码: print ('This program tells whether the number is prime or not') print ('') def prime(x): if x < 2

我已经写了一段代码来找出一个数字是素数还是复合数。 当我输入素数时,代码工作正常,但当我输入复合数时,输出为:

enter number: 100
The number is not prime.
The number is prime.
我不希望复合数字输入的数字是素数。 这是我的密码:

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))
print('此程序告诉您该数字是否为素数')
打印(“”)
def基本(x):
如果x<2:
打印('数字不是素数')
其他:
对于范围(2,x-1)内的n:
如果x%n==0:
打印('数字不是素数')
打破
print('数字是素数')
i=输入('输入编号:')
素数(整数(i))

请告诉我我能做些什么来纠正它。

问题是,当您中断循环时,将调用最后一个print语句。如果使用
return
语句结束函数,则不会到达最后一条打印语句

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.')
def prime(x):
如果x<2:
打印('数字不是素数')
其他:
对于范围(2,x-1)内的n:
如果x%n==0:
打印('数字不是素数')
回来
print('数字是素数')

我知道原因了。如果发生了,你就失去了其他人。试试这个:

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))
print('此程序告诉您该数字是否为素数')
打印(“”)
def基本(x):
如果x<2:
打印('数字不是素数')
其他:
对于范围(2,x-1)内的n:
如果x%n==0:
打印('数字不是素数')
打破
其他:
print('数字是素数')
i=输入('输入编号:')
素数(整数(i))

问题在于缩进,您必须移动最后一行的缩进,并在其后添加一个
分隔符,因此请尝试使用:

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))
print('此程序告诉您该数字是否为素数')
打印(“”)
def基本(x):
如果x<2:
打印('数字不是素数')
其他:
对于范围(2,x-1)内的n:
如果x%n==0:
打印('数字不是素数')
打破
print('数字是素数')
打破
i=输入('输入编号:')
素数(整数(i))

只需在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

“break”语句将使您脱离循环,而不是函数。因此,无论何时运行“break”语句,都会在循环后运行命令,从而退出循环。因此,您的另一个print语句也会被执行。因此,您应该添加return语句或添加一些变量来检查另一个print语句的条件。此外,您应该将循环范围保持到(x/2),您可以在wiki上找到更多关于此的信息。否则应退出if循环。117工作正常。这个程序告诉你这个数字是否是素数。输入数字:117这个数字不是素数。In[]:当在if条件中使用break时,当满足if条件时,它将退出循环并执行下一个语句块/s@U10-转发,请用你的手机试试2,3,它不会打印任何内容。不客气。是的,这是可行的,但它不会为值2和3提供任何输出。你能解决这个问题吗?有了这个,你可以对布尔变量做任何你想做的事情。有条件的话,你可以打印你想要的任何东西。
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
print('Number is prime' if is_prime(6) else 'Number is not prime')