Вычислите количество четных, нечетных и простых чисел в заданном диапазоне. 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 до квадратного корня этого числа