Эффективное решето Эратосфена на PythonPython

Программы на Python
Anonymous
Эффективное решето Эратосфена на Python

Сообщение Anonymous »

Этот очень короткий и простой код на #Python пытается смоделировать «Решето Эратосфена» для первых N натуральных чисел с ограничениями (0) краткости сценария; (1) минимизация операторов if и циклов for/ while; (2) эффективность с точки зрения использования процессорного времени.

Код: Выделить всё

import numpy as np
N = 10**5
a = np.array(range(3,N,2))
for j in range(0, int(round(np.sqrt(N),0))):
a[(a!=a[j]) & (a%a[j] == 0)] = 0
a = a[a!=0]
a = [2]+list(a)
На процессоре Intel Core I5 ​​простые числа возвращаются одними из первых:
  • < li>N = 100 000 за 0,03 секунды;
  • N = 1 000 000 за 0,63 секунды;
  • N = 10 000 000 за 22,2 секунды.
Хотит ли кто-нибудь поделиться более эффективными кодами в срок процессорного времени в рамках вышеупомянутых ограничений?

Подробнее здесь: https://stackoverflow.com/questions/499 ... -in-python

Вернуться в «Python»