Eratosfen elagi
Eratosfen elagi (Eratosfen gʻalviri) — butun son
n
{\displaystyle n}
gacha boʻlgan barcha tub sonlarni topish algoritmi boʻlib, qadimiy grek matematigi Eratosfen Kireniyga bagʻishlab nomlangan. Eratosfen elagi algoritmi kichik (odatda, 10 milliondan kichik boʻlgan) tub sonlar topishning eng tez uslub hisoblanadi.
Algoritm
Butun son n gacha boʻlgan barcha tub sonlarni topish Eratosfen uslubiga asosan quyidagi bosqichlardan iborat.
Natijada roʻyxatdagi oʻchirilmagan sonlarning barchasi tub son boʻladi.
Amaliyotda, ushbu algoritmni quyidagicha yaxshilash (tezlashtirish) mumkin. Algoritmdagi 3-qadamda sonlarni p2 dan boshlab oʻchirish yetarli, chunki bundan kichik sonlar avval oʻchirilgan boʻladi. Va, algoritm p2 qiymati nga teng yoki katta boʻlganda toʻxtatiladi.
Misol
Quyidga n=30 uchun Eratosfen algoritmni qoʻllab tub sonlarni topamiz. Buning uchun, 2dan 30gacha boʻlgan barcha butun sonlarni tartib boʻyicha yozib chiqamiz:
Roʻyxatdagi birinchi son 2 — butun son.
Roʻyxatdan birma-bir 2ning koʻpaytmalarini oʻchirib chiqamiz, yaʼni 2 = 4 dan boshlab :
Keyingi oʻchirilmagan son 3 — butun son.
Roʻyxatdan endi 3ning koʻpaytmalarini oʻchirib chiqamiz, yaʼni 3 =9 dan boshlab :
Keyingi oʻchirilmagan son 5 — butun son.
Roʻyxatdan endi 5 ning koʻpaytmalarini oʻchirib chiqamiz, yaʼni 5=25 dan boshlab :
Algoritmga asosan pning koʻpaytmalarini p2 >= n shart bajarilguncha oʻchirib chiqish zarur.
misol uchun, 5ning koʻpaytmalari oʻchirilib chiqildi va 6 > 30 shart bajarildi. Demak, oʻchirilmagan sonlarning barchasi butun son:
C tilidagi dastur
Havolalar
uz.wikipedia.org