Решето́ Ератосфе́на в математиці — простий стародавній алгоритм знаходження всіх простих чисел менших деякого цілого числа , що був створений давньогрецьким математиком Ератосфеном.
Метод
Якщо потрібно знайти всі прості числа менші за певне число N, виписуються всі числа від 2 до N.
- Перше просте число — два. Викреслимо всі числа більші двох, які діляться на два (4, 6, 8 …).
- Наступне число, яке залишилося незакресленим (три), є простим. Викреслюємо всі числа більші трьох та кратні трьом (6, 9 …).
- Наступне незакреслене число (п'ять) є простим. Викреслимо всі числа більші п'яти та кратні п'яти (10, 15, 20, 25 …).
- Повторюємо операцію поки не буде досягнуто число N:
- Наступне незакреслене число є простим. Викреслимо всі числа більші нього та кратні йому.
Числа, які залишилися незакресленими після цієї процедури — прості.
Викреслювати кратні для кожного простого p можна розпочинаючи з p2, а не з 2p. Тобто:
- кратні трьом викреслюють починаючи з 32=9 (оскільки 6 уже викреслено як кратне двом);
- кратні п'яти викреслюють починаючи з 25=52 (числа 10, 15, 20 уже викреслено, бо вони кратні двом або трьом);
- кратні семи починають викреслювати з 49, оскільки 14, 21, 28, 35 і 42 вже викреслено як кратні двом, трьом чи п'яти;
- і т.д.
Оцінка складності
Алгоритм потребує біт пам'яті та математичних операцій.
Приклад
Запишемо натуральні числа від 2 до 20 в рядок:
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Перше число в рядку 2 — просте. Викреслимо всі числа кратні 2 (кожне друге, починаючи з ):
2 34567891011121314151617181920
Наступне незакреслене число 3 — просте. Викреслимо всі числа кратні 3 (кожне третє, починаючи з ):
2 34567891011121314151617181920
Наступне незакреслене число 5 — просте. Викреслимо всі числа кратні 5 (кожне п'яте, починаючи з ). І т. д.
Необхідно викреслити кратні для всіх простих чисел , для яких . В результаті всі складені числа будуть викреслені, а залишаться всі прості числа. Для вже після викреслювання кратних числу 3 всі складені числа виявляються викресленими.
Реалізація алгоритму решета Ератосфена
Псевдокод
Решето Ератосфена може бути виражене в псевдокоді наступним чином:
Алгоритм Решето Ератосфена є вхід : ціле число n > 1. вихід : всі прості числа від 2 до n. нехай A — масив булевих значень, індексованих цілим числом s від 2 до n, ініціалізуємо весь масив значеннями true. для i = 2, 3, 4, ..., що не перевищує √n робити якщо А [i] є true для j = i2, i2 + i, i2 + 2i, i2 + 3i, ..., що не перевищує n робити A[j] := false повернути всі i де A[i] є true.
Цей алгоритм видає всі прості числа, що не перевищують n . Він включає загальну оптимізацію, яка полягає в тому, щоб почати перераховувати числа кратні кожному простому i з i2. Часова складність цього алгоритму становить O(n log log n), при стандартному припущенні, що оновлення масиву відбувається за час O(1).
Python
Реалізація мовою Python:
import math N = 1000000 # діапазон в якому шукаємо прості числа prime = [True] * N prime[0], prime[1] = False, False # 0 та 1 не є простими for i in range(2, math.ceil(math.sqrt(N))): # від 2 до квадратного кореня з N if prime[i]: # якщо просте видаляємо всі числа кратні до нього j = i * i # для i=2,j будуть такі значення 4,6,8,10,12... для i=3 j — 9,12,15,18,21... while j < N: prime[j] = False j += i
Див. також
Джерела
- Weisstein, Eric W. Sieve of Eratosthenes(англ.) на сайті Wolfram MathWorld.
- Jonathan Sorenson, An Introduction to Prime Number Sieves, Computer Sciences Technical Report #909, Department of Computer Sciences University of Wisconsin-Madison, January 2, 1990 (the use of optimization of starting from squares, and thus using only the numbers whose square is below the upper limit, is shown).
- Sedgewick, Robert (1992). Algorithms in C++. Addison-Wesley. ISBN ., p. 16.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Resheto Eratosfe na v matematici prostij starodavnij algoritm znahodzhennya vsih prostih chisel menshih deyakogo cilogo chisla n displaystyle n sho buv stvorenij davnogreckim matematikom Eratosfenom MetodYaksho potribno znajti vsi prosti chisla menshi za pevne chislo N vipisuyutsya vsi chisla vid 2 do N Pershe proste chislo dva Vikreslimo vsi chisla bilshi dvoh yaki dilyatsya na dva 4 6 8 Nastupne chislo yake zalishilosya nezakreslenim tri ye prostim Vikreslyuyemo vsi chisla bilshi troh ta kratni trom 6 9 Nastupne nezakreslene chislo p yat ye prostim Vikreslimo vsi chisla bilshi p yati ta kratni p yati 10 15 20 25 Povtoryuyemo operaciyu poki ne bude dosyagnuto chislo N Nastupne nezakreslene chislo ye prostim Vikreslimo vsi chisla bilshi nogo ta kratni jomu Chisla yaki zalishilisya nezakreslenimi pislya ciyeyi proceduri prosti Vikreslyuvati kratni dlya kozhnogo prostogo p mozhna rozpochinayuchi z p2 a ne z 2p Tobto kratni trom vikreslyuyut pochinayuchi z 32 9 oskilki 6 uzhe vikresleno yak kratne dvom kratni p yati vikreslyuyut pochinayuchi z 25 52 chisla 10 15 20 uzhe vikresleno bo voni kratni dvom abo trom kratni semi pochinayut vikreslyuvati z 49 oskilki 14 21 28 35 i 42 vzhe vikresleno yak kratni dvom trom chi p yati i t d Ocinka skladnostiAlgoritm potrebuye O N displaystyle O N bit pam yati ta O N log log N displaystyle O N log log N matematichnih operacij PrikladZapishemo naturalni chisla vid 2 do 20 v ryadok 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Pershe chislo v ryadku 2 proste Vikreslimo vsi chisla kratni 2 kozhne druge pochinayuchi z 2 2 4 displaystyle 2 2 4 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Nastupne nezakreslene chislo 3 proste Vikreslimo vsi chisla kratni 3 kozhne tretye pochinayuchi z 3 2 9 displaystyle 3 2 9 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Nastupne nezakreslene chislo 5 proste Vikreslimo vsi chisla kratni 5 kozhne p yate pochinayuchi z 5 2 25 displaystyle 5 2 25 I t d Neobhidno vikresliti kratni dlya vsih prostih chisel p displaystyle p dlya yakih p 2 n displaystyle p 2 leq n V rezultati vsi skladeni chisla budut vikresleni a zalishatsya vsi prosti chisla Dlya n 20 displaystyle n 20 vzhe pislya vikreslyuvannya kratnih chislu 3 vsi skladeni chisla viyavlyayutsya vikreslenimi Realizaciya algoritmu resheta EratosfenaPsevdokod Resheto Eratosfena mozhe buti virazhene v psevdokodi nastupnim chinom Algoritm Resheto Eratosfena ye vhid cile chislo n gt 1 vihid vsi prosti chisla vid 2 do n nehaj A masiv bulevih znachen indeksovanih cilim chislom s vid 2 do n inicializuyemo ves masiv znachennyami true dlya i 2 3 4 sho ne perevishuye n robiti yaksho A i ye true dlya j i2 i2 i i2 2i i2 3i sho ne perevishuye n robiti A j false povernuti vsi i de A i ye true Cej algoritm vidaye vsi prosti chisla sho ne perevishuyut n Vin vklyuchaye zagalnu optimizaciyu yaka polyagaye v tomu shob pochati pererahovuvati chisla kratni kozhnomu prostomu i z i2 Chasova skladnist cogo algoritmu stanovit O n log log n pri standartnomu pripushenni sho onovlennya masivu vidbuvayetsya za chas O 1 Python Realizaciya movoyu Python import math N 1000000 diapazon v yakomu shukayemo prosti chisla prime True N prime 0 prime 1 False False 0 ta 1 ne ye prostimi for i in range 2 math ceil math sqrt N vid 2 do kvadratnogo korenya z N if prime i yaksho proste vidalyayemo vsi chisla kratni do nogo j i i dlya i 2 j budut taki znachennya 4 6 8 10 12 dlya i 3 j 9 12 15 18 21 while j lt N prime j False j iDiv takozhResheto Sundarama Resheto AtkinaDzherelaWeisstein Eric W Sieve of Eratosthenes angl na sajti Wolfram MathWorld Jonathan Sorenson An Introduction to Prime Number Sieves Computer Sciences Technical Report 909 Department of Computer Sciences University of Wisconsin Madison January 2 1990 the use of optimization of starting from squares and thus using only the numbers whose square is below the upper limit is shown Sedgewick Robert 1992 Algorithms in C Addison Wesley ISBN 978 0 201 51059 1 p 16