Задача с codewars не проходит по времени

Решаю задачу с Codewars про простые числа, вот ссылка:

https://www.codewars.com/kata/5519a584a73e70fa570005f5/train/python

Суть задачи -- вернуть генератор простых чисел. Было решено применить решето Эратосфена, и получился такой код:

import numpy as np
import time


class Primes:
    @staticmethod
    def stream():
        num = 15500000
        seive = np.zeros(num + 1, dtype=bool)
        yield 2
        for i in range(3, num + 1, 2):
            if not seive[i]:
                yield i
                for j in range(i ** 2, num + 1, i):
                    seive[j] = True


start_t = time.time()
a = Primes.stream()
count = 0
for i in a:
    try:
        count += 1
    except:
        break
print(time.time() - start_t, ' Потрачено времени')
print(count, ' Количество найденных простых чисел')

Для того чтобы выполнить кату, код должен достаточно быстро сгенерировать все простые числа примерно до 15,5 миллионов. Когда я запускаю тесты на компе, вроде выглядит всё ок (учитывая, что Timed Out в Codewars возникает при выполнении кода дольше 12 секунд):

введите сюда описание изображения

Однако на претестах в Codewars он выполняется 9 секунд (учитывая, что максимальное простое число с претестов 8017):

введите сюда описание изображения

А если засылать задачу на тесты, то там вообще всё максимально плохо:

введите сюда описание изображения

Подскажите пж, что с этим можно сделать


Ответы (0 шт):