Python IF иначе и для цикла работы - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь написать функцию, которая возвращает количество простых чисел, существующих до и включая данное число.

Изначально это был мой код:

def count_primes(num):

    prime = [2]
    x = 3

    if num < 2:
        return 0

    while x <= num:
        for y in prime:
            if x%y == 0:
                print('not prime')
                x+=2
                break
            else:
                prime.append(x)
                x += 2

    return len(prime)

Как я понимаю, этот код будет работать вечно из-за следующей строки кода:

for y in prime:
    if x%y == 0:
        print('not prime')
        x+=2
        break
    else:
        prime.append(x)
        x += 2

Может ли кто-нибудь помочь мне объяснить, почему это закончится бесконечным циклом по сравнению со следующим кодом?

for y in prime:
    if x%y == 0:
        print('not prime')
        x+=2
        break
else:
    prime.append(x)
    x += 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...