Python: алгоритм поиска простых чисел - PullRequest
1 голос
/ 20 апреля 2019

Недавно мой учитель бросил мне вызов моим навыкам кодирования, так как он увидел, что я уже хорошо знаю, чему он учил. Вопрос в следующем.

Создать программу, которая запрашивает у пользователя 2 номера. Затем программа отобразит все простые числа между двумя указанными числами, включая заданные числа. Примечание. Нельзя считать, что первый вход больше, чем второй.

Итак, я взял этот вопрос и построил довольно простой алгоритм, запустил его, и он заработал. Я открыл его сегодня, чтобы выяснить, по какой-то причине мой вывод иногда неверен, например, когда вы вводите 8 и 29, я получаю 27. Я ищу HINTS о том, что не так с моей логикой, потому что я не могу для жизни меня понять, что я делаю неправильно. Я не хочу прямо исправления, потому что я хотел бы извлечь из этого как можно больше уроков и сделать это самому.

numbers = [int(input("First Number")), int(input("Second Number"))]
numbers.sort()

numList = []
#Removing Even Numbers
for num in range(numbers[0],numbers[1] + 1):
    if num % 2 != 0:
        numList.append(num)

#Checking For Prime Numbers
for currNum in numList:
   #Set Start number to divide
    i = 2
    while i < currNum:
        #Checks if the currNum can be divisble by i and is a whole number
        if currNum % i != 0:
          i = i + 1
        else :
          numList.remove(currNum)
          break

print(numList)

Из того, что я узнал из этого теста, кажется, что 27 никогда не проверяется во время цикла for или while, даже если он находится в массиве numList.

1 Ответ

2 голосов
/ 20 апреля 2019

Никогда не удаляйте элементы из списка, который вы перебираете. Вместо этого создайте новый список:

numbers = [int(input("First Number")), int(input("Second Number"))]
numbers.sort()

primes = []
for num in range(numbers[0], numbers[1] + 1):
    #Set Start number to divide
    i = 2
    while i < num:
        #Checks if the currNum can be divisble by i and is a whole number
        if num % i == 0:
            break
        i += 1
    else:
        primes.append(num)

print(primes)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...