Поиск простых чисел с использованием списка

Я пытался сгенерировать все простые числа в диапазоне от x до y. Сначала я попробовал простой пример: range(10,11) что означает проверить, является ли 10 простым числом:
Вот мой код:

 prime_list = [x for x in range(10, 11) for y in range(2,x) if x % x == 0 and x % 1 == 0 and x % y != 0] 

Я знаю, что в этом случае отсутствует возможность указать выражение, что x%y != 0 должно быть проверено для всех y в range (2,x) и возвращать true тогда и только тогда, когда все встретили это условие.

Как мы это делаем?

4 Solutions collect form web for “Поиск простых чисел с использованием списка”

Используйте all чтобы проверить все элементы (от 2 до x-1):

 >>> [x for x in range(2, 20) if all(x % y != 0 for y in range(2, x))] [2, 3, 5, 7, 11, 13, 17, 19] 

Версия с фильтром:

 filter(lambda x:all(x % y != 0 for y in range(2, x)), range(2, 13)) 

Одним из способов использования набора понятий может быть

 list(set(range(2,11)) - {x for x in range(11) for y in range(2,x) if x%y == 0}) 

Ответ @ falsetru верен. Но также следует обратить внимание на оптимизированный код. Как сказал кто-то в комментариях в ответе Кастры

 In [227]: %timeit [x for x in range(4, 1000) if all(x % y != 0 for y in range(2, int(m.sqrt(x)) + 1))] 100 loops, best of 3: 2.08 ms per loop In [228]: %timeit [x for x in range(4, 1000) if all(x % y != 0 for y in range(2, int(m.sqrt(x)) + 1))] 100 loops, best of 3: 2.09 ms per loop In [229]: %timeit [x for x in range(4, 1000) if all(x % y != 0 for y in range(2, x-1))] 100 loops, best of 3: 10.4 ms per loop In [230]: %timeit [x for x in range(4, 1000) if all(x % y != 0 for y in range(2, x-1))] 100 loops, best of 3: 10.3 ms per loop 
  • Строка в списке, в функцию
  • Самый безопасный способ преобразования float в integer в python?
  • Неточный логарифм в Python
  • Поиск подписи под углом между векторами
  • Как вычислить логарифм 1 минус показатель данного небольшого числа в python
  • Операции над хэшами Python
  • Перестановки без повторения вывода в Python
  • Обнаруживать, пересекаются ли куб и конус друг с другом?
  • Python - лучший язык программирования в мире.