Функция для поиска простых чисел - PullRequest
0 голосов
/ 24 августа 2018

У меня есть две функции, которые идентичны, функция находит все простые числа до заданного числа

def count_primes2(num):
    primes = [2,3,]
    x = 5
    if num < 2:
        return 0
    while x <= num:
        for y in primes:  # use the primes list!
            if x%y == 0:
                x += 2
                break
        else:
            primes.append(x)
            x += 2
    print(primes)
    return len(primes) 


def count_primes3(num):
    primes = [2]
    x = 3  
    if num < 2 :
        return 0
    while x <= num:
        for y in range(3,x,2):
            if x%y == 0:
                x += 2               
                break                
        else:
            primes.append(y)
            x += 2    
    print(primes)   

count_primes2 работает отлично и дает мне выход, однако count_primes3 дает мне UnboundLocalError at primes.append(y)

Функция завершается, если я прокомментирую этот шаг.Кто-нибудь может сказать мне, почему это происходит?

1 Ответ

0 голосов
/ 24 августа 2018

Вы пытаетесь добавить y вместо x, как вы делаете в count_primes2.

def count_primes3(num):
    primes = [2]
    x = 3  
    if num < 2 :
        return 0
    while x <= num:
        for y in range(3,x,2):
            if x%y == 0:
                x += 2               
                break                
        else:
            primes.append(x) ### This shouldn't be a y
            x += 2    
    print(primes)   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...