Я пытаюсь найти простое число в списке, используя фильтр, но не могу найти ошибку, так как результат - нечетные числа - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь найти простое число, используя функцию фильтра в списке, но получаю список нечетных чисел. Пожалуйста, помогите мне найти, где находится ошибка.

def prime(n):
    for i in range(2,n):
        if n%i==0:return False
        else: return True
L=[x for x in range(11)];print(L)
L1=[x for x in filter(prime,L)]
print(L1)

Ответы [ 2 ]

1 голос
/ 13 мая 2019

Проблема в том, что у вас есть return True в цикле for.

def prime(n):
    for i in range(2, n):
        if n % i == 0:
            return False
    return True


primes = list(filter(prime, range(2, 20)))
print(primes)

Вам не нужно иметь понимание списка, чтобы отфильтровать элементы, вместо этого используйте filter(prime, range(2, 20)).

0 голосов
/ 13 мая 2019

Простое число - это число, которое не может быть разделено ни одним предшествующим ему числом:

def prime(n):
    for i in range(2,n):
        if n%i==0:
            return False
    return True

Используйте его в функции фильтра:

primes_less_than_hundred = filter(prime, range(3, 100))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...