使用嵌套的for循环生成素数

时间:2019-11-06 03:39:20

标签: python algorithm numbers primes primality-test

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

本质上,这些是程序执行的步骤:

  • 向用户询问寻找质数的上下限
  • 素数数组将存储我的素数
  • 嵌套的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,但我不知道为什么!

1 个答案:

答案 0 :(得分:1)

解决了。首先,我进行了楼层除法//运算符,因此它返回一个整数。另外,我还提出了一个条件,即除数不能被自身除。因为否则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]

相关问题