首页 > 解决方案 > 为除数创建工具

问题描述

import requests
def repeat():

  x = int(input("Common divisors of: "))

  listrange = list(range(2,x))

  emptylist = []

  for number in listrange:
    if x % number == 0:
      emptylist.append(number)
      print (emptylist)
    elif x % number not in listrange:
      print ("Prime number")

while True:
  repeat()

每当我运行此代码时,无论我输入什么,它都会多次打印质数。

我想要它做的是给除 1 和整数之外的任何整数的所有公约数。如果整数是素数,我希望它打印素数

然而,正如我之前提到的,由于某种原因,这会导致一个问题,即每当执行代码时,即使使用了语句,它也会一遍又一遍地打印素数。elif

标签: pythongreatest-common-divisor

解决方案


您当前的逻辑每次遇到不除数范围内的整数时都会打印“素数”,无论其他数字是否除以它(即它不是素数)(即它是素数)。

这个逻辑纠正了这一点:

def repeat():

  x = int(input("Common divisors of: "))
  listrange = list(range(2,x))
  emptylist = []

  for number in listrange:
    if x % number == 0:
      emptylist.append(number)

  if not emptylist: #Checks if emptylist is empty i.e. is prime
      print ("Prime number")

  else:
      print (emptylist)

例如

Common divisors of: 5
Prime number

Common divisors of: 28
[2, 4, 7, 14]

推荐阅读