Использование вложенных циклов для генерации простых чисел - PullRequest
0 голосов
/ 06 ноября 2019

Я создал алгоритм проверки простоты, но он не работает.

По сути, это те шаги, которые выполняет моя программа:

  • Запросите у пользователя нижнюю и верхнюю границы для поиска простых чисел
  • Массив,простые числа, будут хранить мои простые числа
  • Вложенный для цикла;первый 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 Ответ

1 голос
/ 06 ноября 2019

Исправлено. Сначала я сделал оператор деления на этаж //, чтобы он возвращал целое число. Кроме того, я поставил условие, что делитель не может быть разделен сам по себе. Потому что в противном случае 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]

...