# ╔═══════════════════════════════════════════════════════════════════╗ # ║ ERATOSTHENES ELEĞİ — asal olmayanları eleyerek asalları bul ║ # ║ Her tur bir asalın katlarını söndürür; ızgara canlı güncellenir. ║ # ╚═══════════════════════════════════════════════════════════════════╝ kullan kaba.sistem SINIR = 120 fonksiyon renkli(yazi: metin, renk: sayi): don "\033[38;5;" + metin(renk) + "m" + yazi + "\033[0m" fonksiyon ekrani_temizle(): yazdir("\033[H\033[2J") fonksiyon izgarayi_ciz(elek, aktif: sayi, elenen: sayi): ekrani_temizle() yazdir("") yazdir(renkli(" ERATOSTHENES ELEĞİ — 2'den " + metin(SINIR) + "'e", 81)) yazdir(renkli(" " + "─".tekrarla(62), 238)) satir = " " sutun = 0 i = 2 iken i <= SINIR: kutu = metin(i) eger i < 10: kutu = " " + kutu degilse: eger i < 100: kutu = " " + kutu eger elek[i] == 0: satir = satir + renkli(kutu + " ", 236) degilse: eger i == aktif: satir = satir + renkli(kutu + " ", 220) degilse: satir = satir + renkli(kutu + " ", 78) sutun = sutun + 1 eger sutun == 15: yazdir(satir) satir = " " sutun = 0 i = i + 1 eger sutun > 0: yazdir(satir) yazdir(renkli(" " + "─".tekrarla(62), 238)) yazdir(renkli(" elenen: " + metin(elenen) + " şu an eleyen asal: " + metin(aktif), 245)) uyu(420) # ── Elek ────────────────────────────────────────────────────────────── # 1 = hâlâ aday, 0 = elendi. Bir asalın katları asal olamaz. elek = [] i = 0 iken i <= SINIR: elek.ekle(1) i = i + 1 elenen = 0 p = 2 iken p * p <= SINIR: eger elek[p] == 1: kat = p * p iken kat <= SINIR: eger elek[kat] == 1: elek[kat] = 0 elenen = elenen + 1 kat = kat + p izgarayi_ciz(elek, p, elenen) p = p + 1 izgarayi_ciz(elek, 0, elenen) asallar = 0 i = 2 iken i <= SINIR: eger elek[i] == 1: asallar = asallar + 1 i = i + 1 yazdir("") yazdir(renkli(" ✓ " + metin(SINIR - 1) + " sayıdan " + metin(elenen) + " tanesi elendi, " + metin(asallar) + " asal kaldı.", 78)) yazdir(renkli(" Eleme yalnız p*p'den başlar: küçük katlar zaten elenmiştir.", 245)) yazdir("")