Sito Eratostenesa

Program symuluje działanie algorytmu Sita Eratostenesa wyszukującego liczby pierwsze z przedziału od 2 do n.


Sito Eratostenesa:

Algorytm Sita Eratostenesa jest pprzypisywany Eratostenesowi z Cyreny algorytm wyznaczania liczb pierwszych z zadanego przedziału [2,n].

Algorytm polega na wykreślaniu wszystkich wielokrotności jeszcze nie wykreślonych liczb z przedziału od 2 do n. Działanie rozpoczynam od liczby 2, o której wiemy, że jest liczbą pierwszą i wykreślanymy wszystkie jej wiekrotności mniejsze lub równe n. Następnie przechodzimy do kolejnej jeszcze nie wykreślonej liczby (3) i analogicznie wykreślamy jej wielokrotności, działanie to powtarzamy dla wszystkich niewykreślonych jeszcze liczb mniejszych lub równych pierwiastek z n.
Po wykonaniu tej operacji, wszystkie niewykreślone jeszcze liczby będą liczbami pierwszymi.


Przykładowa implementacje w Pythonie

  1. # sito Eratostenesa - generowanie liczb pierwszych
  2.  
  3. def generuj(n):
  4. T = [0]
  5. for i in range(1, n + 1):
  6. T += [1]
  7. i = 2
  8. while i <= n:
  9. if T[i] == 0:
  10. i = i + 1
  11. m = 2 * i
  12. while m <= n:
  13. T[m] = 0
  14. m = m + i
  15. i = i + 1
  16. for indeks, wartosc in enumerate(T):
  17. if wartosc == 1 and indeks > 1:
  18. print(indeks)
  19.  
  20. generuj(40)