Проблемы с циклами while в Python - PullRequest
0 голосов
/ 11 января 2019

Я занимаюсь вопросом проекта Эйлера (если вы это сделали, не портите его!) В следующем коде я создал цикл while. Когда я запускаю код, он не выдает мне сообщение об ошибке, а просто не дает мне ответа. Я подозреваю, что есть проблема с моим циклом while, который делает его бесконечным.

import math
def euler(n):
    m=[]
    a=1
    c=0
    while c<=int(n):
        a+=a
        c=0
        for x in range(1, int(math.sqrt(a))+1):
            if n%x==0:
                if n/x==x:
                    c+=1
                else:
                    c+=2
    print(a)

Я не знаю, что не так с циклом. Может ли кто-нибудь помочь мне понять, что не так и почему?

1 Ответ

0 голосов
/ 11 января 2019

Проблема в выражении c=0 внутри цикла while.

while c<=int(n):
        a+=a
        c=0  ## Problematic
        for x in range(1, int(math.sqrt(a))+1):
            if n%x==0:
                if n/x==x:
                    c+=1
                else:
                    c+=2

Для каждой итерации c становится 0 в цикле while, поэтому оно всегда будет меньше n. Следовательно, цикл работает бесконечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...