0

我创建了一个素数测试算法,但它不起作用。

本质上,这些是我的程序采取的步骤:

  • 询问用户寻找素数的下限和上限
  • 一个数组,素数,将存储我的素数
  • 嵌套的 for 循环;第一个for loop取用户下限和上限之间的每个数字,然后检查这些数字中的每一个是否可以被 2 和用户上限之间的任何数字整除
  • 如果上下界之间的任何数都可以被 2 和用户的上界之间的任何数整除,则该数显然不是素数。
  • 否则,将数字附加到数组素数:
lower = int(input("Lower Bound: "))
upper = int(input("Upper Bound: "))

print ("Primes between " + str(lower) + " and " + str(upper) + ": ")

primes = []

for i in range (lower, upper): 
  for num in range (2, upper/2):
    if i % num == 0: 
      print (str(i-(lower-1)) + ". " + str(i) + " = No")
      break
  else: 
    primes.append(i)

print(primes)

但是,无论一个数字是否为素数,该函数总是输出 no,但我不知道为什么!

4

1 回答 1

2

解决它。首先,我做了地板除法//运算符,所以它返回一个整数。另外,我做了一个条件,除数不能被自己除。因为否则 4 将是 4 的素数。

lower = int(input("Lower Bound: "))
upper = int(input("Upper Bound: "))

print ("Primes between " + str(lower) + " and " + str(upper) + ": ")

primes = []

for i in range (lower, upper):
  for num in range (2, upper//2):
    if i % num == 0 and num != i: # modification here
      print (str(i-(lower-1)) + ". " + str(i) + " = No")
      break
  else:
    primes.append(i)

print(primes)

Out[1]: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43]

于 2019-11-06T04:36:21.713 回答