Недавно мой учитель бросил мне вызов моим навыкам кодирования, так как он увидел, что я уже хорошо знаю, чему он учил. Вопрос в следующем.
Создать программу, которая запрашивает у пользователя 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.