غربال إراتوستينس هي خوارزمية بسيطة لإيجاد جميع الأعداد الأولية حتى عدد ما.[1][2][3] تعمل هذه الخوارزمية بكفاءة من أجل الأعداد الأولية الصغيرة (حتى عشرة ملايين). صممت هذه الخوارزمية من قبل إراتوستينس الرياضياتي الإغريقي.
وصف الخوارزمية
لإيجاد الأعداد الأولية الأصغر من n تتبع الخوارزمية الخطوات التالية:
- أنشئ قائمة بجميع الأعداد من الرقم 2 إلى العدد الذي تريد,
- نبدأ بقيمة ل p تساوي 2، أول الأعداد الأولية,
- اشطب من القائمة جميع الأعداد من مضاعفات p والتي هي أكبر من p,
- ابحث عن العدد التالي غير المشطوب في القائمة، هذا العدد هو العدد الأولي التالي، وسيكون هو العدد p التالي,
- كرر الخطوات 3 و4 حتى يصير p2 هي أكبر من n,
- جميع الأعداد الباقية على القائمة هي أعداد أولية.
مثال
تعقيد الخوارزمية
البرمجة
المدخل: عدد n طبيعي أكبر قطعا من 1
ليكن A جدولا من القيم البوليانية، مفهرسا بالأعداد الطبيعية من 2 حتى n، كلها تساوي في البداية ل true.
for i = 2, 3, 4, ...
, while i ≤ n/2: if A[i] is true:
for j = 2i, 3i, 4i, ..., while j ≤ n: A[j] = false
الآن كل الأعداد i حيث [A[i تساوي true هي أعداد أولية.
المتتاليات الحسابية
غربال أويلر
انظر برهان صيغة جداء أويلر بالنسبة لدالة زيتا لريمان.
مقالات ذات صلة
مراجع
- "معلومات عن غربال إراتوستينس على موقع zthiztegia.elhuyar.eus". zthiztegia.elhuyar.eus. مؤرشف من الأصل في 5 ديسمبر 2018.
- "معلومات عن غربال إراتوستينس على موقع britannica.com". britannica.com. مؤرشف من الأصل في 27 ديسمبر 2017.
- "معلومات عن غربال إراتوستينس على موقع rosettacode.org". rosettacode.org. مؤرشف من الأصل في 24 أبريل 2019.
وصلات خارجية
- Eratosthenes, sieve of at Encyclopaedia of Mathematics
- Interactive JavaScript Page
- Sieve of Eratosthenes by George Beck, Wolfram Demonstrations Project.
- Sieve of Eratosthenes in Haskell
- Sieve of Eratosthenes algorithm illustrated and explained. Java and C++ implementations.
- A related sieve written in x86 assembly language
- A highly optimized Sieve of Eratosthenes in C
- A parallel implementation in C#
- SieveOfEratosthenesInManyProgrammingLanguages c2 wiki page
- The Art of Prime Sieving Sieve of Eratosthenes in C from 1998 with nice features and algorithmic tricks explained.