Вычислите количество четных, нечетных и простых чисел в заданном диапазоне. Python

lower = int(input())
upper = int(input())
odd = 0
even = 0
prima = 0
for i in range(lower, upper+1):
    if i % 2 == 0:
        even += 1
    else:
        odd += 1

    if i > 1:
        for j in range(2, i):
            if (i % j) == 0:
                break
            else:
                prima += 1

print(prima, even, odd)

Я написала вот такой код. Что касается нечётных и чётных чисел - всё работает. А вот с простыми числами выдаёт неправильный ответ. Подскажите в чём проблема. Спасибо.


Ответы (1 шт):

Автор решения: Elusha

Вам нужно изменить условие для проверки на простоту числа. Раньше вы считали число правильным сразу, если оно не делилось на 2.

По сути надо написать блок else для цикла, то есть удалить по знаку табуляции на 2 строках. Так будет работать:

upper = int(input())
odd = 0
even = 0
prima = 0
for i in range(lower, upper+1):
    if i % 2 == 0:
        even += 1
    else:
        odd += 1

    if i > 1:
        for j in range(2, i):
            if (i % j) == 0:
                break
        else:
            prima += 1

print(prima, even, odd)

P.S. Для проверки числа на простоту достаточно перебирать только от 2 до квадратного корня этого числа

→ Ссылка