Рубрики
Без рубрики

Бесконечный список простых чисел с использованием генераторов Python

Улучшите скорость кодирования, используя редактор правильно. Теги с Python, генераторами, простыми пропусками.

Иногда мы хотим создавать коллекции элементов, которые очень дороги для расчета. Первый вариант состоит в том, чтобы создать список и подождать, пока все элементы будут рассчитаны, прежде чем мы его используем. Хотя это работает, это не очень эффективно. Чтобы сделать его немного более эффективным, современные языки предоставляют способ создания пользовательских итераторов, чтобы каждый элемент рассчитывал только при необходимости (это также называется ленивой инициализацией). Кроме того, итераторы позволяют нам создавать бесконечные коллекции!

У Python, на мой взгляд, один из самых краскожников и элегантных способов объявить итераторы: Генераторы Отказ

Без дальнейшего ADO, давайте попробуем создать бесконечный список простых чисел.

Первое, что нам нужно, это способ обнаружить, если число простое:

from math import sqrt

def is_prime(n):
    if (n <= 1):
        return False
    if (n == 2):
        return True
    if (n % 2 == 0):
        return False

    i = 3
    while i <= sqrt(n):
        if n % i == 0:
            return False
        i = i + 2

    return True

Теперь, используя наши IS_PRIME Функция мы можем сделать:

def prime_generator():
    n = 1
    while True:
        n += 1
        if is_prime(n):
            yield n

И это все! Просто позвоните в функцию и получите элементы из него:

generator = prime_generator()

for i in range(10):
    print(next(generator))

Или создать список первых N простых чисел:

from itertools import islice

array = [x for x in islice(prime_generator(), 10)]

Как вы могли видеть, определение итератора является одним из кратчайших и простейших среди всех языков.

Оригинал: “https://dev.to/alebian/infinite-list-of-prime-numbers-using-python-generators-5fdc”