Ошибка в коде счетчика количества простых чисел
Всем привет! Встала задачка. На входе число, функция возвращает количество простых чисел, меньше или равных этому числу.
Цикл получился бесконечным из-за оператора else, хотя мне казалось, в этом коде бесконечного цикла не может быть:
1) Из-за постоянного прибавления числа к переменной x, то есть должно сработать условие while x <= num
2) Из-за цикла for, где рано или поздно мы должны перебрать все значения.
Но почему он получается бесконечным? Спасибо.
def func (num):
#проверка на 0 и 1
if num < 2:
return 0
#список для хранения простых чисел
primes = [2]
x = 3
# х пробегает значения от 3 до num
while x <= num:
for y in range(3,x):
if x%y == 0:
x += 2
break
else:
primes.append(x)
x += 2
print(primes)
return len(primes)
func(100)
Ответы (1 шт):
for y in range(3,x): в вашем случае то же, что и for y in range(3,3):
В свою очередь это значит for y in []: (крайне грубо выражаясь. range - не list)
Вы в цикл не заходите и просто вечно проверяете условие x <= num