اشتريت صندوقًا كبيرًا من قطع الحاسوب العشوائية في سوق لبيع الأغراض المستعملة. وقد بدأت تجمع القطع معًا لتبني حواسيب مخصّصة.
تريد أن تختبر أداء توليفات مختلفة من القطع، فقررت إنشاء برنامج لقياس الأداء خاص بك، لترى كيف يتفاوت أداء حواسيبك. واخترت خوارزمية "Sieve of Eratosthenes" الشهيرة، وهي خوارزمية قديمة، لكنها ستدفع حواسيبك إلى أقصى حدودها.
مهمتك هي إنشاء برنامج ينفّذ خوارزمية غربال إراتوستينس لإيجاد جميع الأعداد الأولية الأصغر من عدد معيّن أو المساوية له.
العدد الأولي هو عدد أكبر من 1 لا يقبل القسمة إلا على 1 وعلى نفسه. على سبيل المثال، الأعداد 2 و3 و5 و7 و11 و13 أعداد أولية. في المقابل، العدد 6 ليس عددًا أوليًا، لأنه لا يقبل القسمة على 1 وعلى نفسه فحسب، بل أيضًا على 2 و3.
لاستخدام غربال إراتوستينس، عليك أولًا إنشاء مصفوفة بجميع الأعداد بين 2 والعدد المعيّن. ثم تكرّر الخطوات التالية:
تستمر في تكرار هذه الخطوات حتى تمرّ على كل عدد في مصفوفتك. وفي النهاية، تكون جميع الأعداد غير المعلَّمة أعدادًا أولية.
لا تتحقق الاختبارات من أنك نفّذت الخوارزمية، بل فقط من أنك توصّلت إلى مصفوفة الأعداد الأولية الصحيحة. وللتحقق من أنك تنفّذ الغربال بشكل صحيح، فإن اختبارًا أوليًا جيدًا هو التحقق من أنك لا تستخدم عمليات القسمة أو الباقي.
لنفترض أنك تبحث عن الأعداد الأولية الأصغر من العدد 10 أو المساوية له.
لقد فحصت جميع الأعداد ووجدت أن الأعداد 2 و3 و5 و7 ما زالت غير معلَّمة، وهذا يعني أنها الأعداد الأولية الأصغر من العدد 10 أو المساوية له.
سجّل في Exercism لتتعلّم وتتقن Delphi Pascal عبر 76 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.
نستكشف أساليب متنوعة لغربال إراتوستينس، بدءًا من الحلقات المتداخلة والتقييم المتأخر، ثم ننتقل إلى المجموعات، وأخيرًا نطّلع على العودية.