Eratosthenes Kalburu
Matematik / Sayı Teorisi O(n log log n) O(n)Her asalın katlarını karesinden başlayarak eleyerek n'e kadar tüm asalları bulur.
n
1/67
2'den 60'e kadar her sayı asal varsayılıyor.
Değişmezp² altında hâlâ çizilmemiş her sayının ≤ p bir çarpanı yoktur, dolayısıyla asaldır.
sieve-of-eratosthenes.c
void sieve(int n) {int prime[n + 1];for (int i = 0; i <= n; i++) prime[i] = 1;prime[0] = prime[1] = 0;for (int p = 2; p * p <= n; p++) {if (!prime[p]) continue;for (int m = p * p; m <= n; m += p)prime[m] = 0; /* cross out multiple */}for (int i = 2; i <= n; i++)if (prime[i]) printf("%d ", i);}
Eratosthenes Kalburu nasıl çalışır?
2..n'i listele; sıradaki hayatta kalan sayıyı (bir asal) al ve katlarını p²'den başlayarak ele. Sonunda ayakta kalan her şey hiçbir küçük asalın katı olmamıştır.
Ne zaman kullanılır?
n'e kadar tüm asalları üretme, hızlı çarpanlama için en-küçük-asal-çarpan tabloları.