0Pricing
Coding Interview Prep · درس

غربال إراتوستينس

إدراج جميع الأعداد الأولية حتى N في زمن شبه خطي

غربال إراتوستينس درس مجاني في Coding Interview Prep على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Coding Interview Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Coding Interview Prep 4 دروس في المجموع.

الأعداد الأولية دفعة واحدة

تحتاج أحيانًا إلى جميع الأعداد الأولية حتى N، لا إلى اختبار واحد فقط. يعثر غربال إراتوستينس عليها كلها في مسح واحد. 🧹

الفكرة الأساسية

ابدأ بافتراض أن كل عدد أولي. ثم اشطب مضاعفات كل عدد أولي تعثر عليه، لتبقي الأعداد الأولية الحقيقية فقط.

أعدّ العلامات

أنشئ قائمة منطقية يحدّد فيها الفهرس i ما إذا كان i أوليًا. هذه المصفوفة هي اللوحة التي يرسم عليها الغربال.

is_prime = [True] * (n + 1)
is_prime[0] = is_prime[1] = False

مرّ على المرشحين

زد قيمة i تدريجيًا. وفي أول مرة تصل فيها إلى عدد لا تزال علامته True، فلا بد أن يكون أوليًا جديدًا لا يملك عاملًا أصغر منه.

اشطب المضاعفات

لكل عدد أولي i، ضع علامة تفيد بأن 2i و3i و4i وما إلى ذلك ليست أولية. فمن الواضح أن تلك المضاعفات تقبل i قاسمًا لها.

for j in range(i * i, n + 1, i):
    is_prime[j] = False

ابدأ من i تربيع

ابدأ الشطب عند i*i، لا عند 2i. فقد أزيلت كل مضاعفة أصغر من ذلك بواسطة عدد أولي أسبق، لذا تخطّها.

توقّف عند الجذر

لا تحتاج إلى تشغيل الغربال إلا ما دام i*i لا يتجاوز N. فبعد الجذر التربيعي تكون كل علامة True متبقية لعدد أولي بالفعل.

الغربال الكامل

اجمع بين المسح الخارجي وعملية الشطب الداخلية. بعد انتهاء الحلقة، يكون كل فهرس لا تزال علامته True عددًا أوليًا مؤكدًا.

for i in range(2, int(n ** 0.5) + 1):
    if is_prime[i]:
        for j in range(i * i, n + 1, i):
            is_prime[j] = False

اجمع الأعداد الأولية

حوّل العلامات النهائية إلى قائمة باستخدام استيعاب القائمة. والآن لديك كل عدد أولي حتى N، جاهزًا للاستعلامات السريعة.

primes = [i for i, p in enumerate(is_prime) if p]

سبب السرعة

يعمل الغربال في زمن يقارب O(n log log n)، أي شبه خطي. ولهذا يتفوق كثيرًا على الاختبار المتكرر لكل عدد على حدة.

انتبه إلى الذاكرة

تستخدم مصفوفة العلامات ذاكرة تتناسب مع N. وعند التعامل مع حدود كبيرة جدًا، راقب ميزانية المساحة قبل التخصيص.

تحقق سريع

تذكّر التحسين الصغير في الحلقة الداخلية.

مراجعة

يمكنك الآن إنشاء غربال لسرد جميع الأعداد الأولية حتى N في زمن شبه خطي، مع بدء كل عدد أولي عند i*i والتوقف عند الجذر. ✅

الأسئلة الشائعة

هل درس «غربال إراتوستينس» مجاني؟

نعم — نص درس «غربال إراتوستينس» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Coding Interview Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Coding Interview Prep 4 دروس في المجموع.

ماذا ستتعلم في «غربال إراتوستينس»؟

إدراج جميع الأعداد الأولية حتى N في زمن شبه خطي تتمرن على Coding Interview Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Coding Interview Prep؟

لا تُشترط خبرة سابقة. Coding Interview Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «غربال إراتوستينس»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Coding Interview Prep هذا؟

نعم. كل درس في Coding Interview Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ‏GCD وLCM والخوارزمية الإقليدية
  2. اختبار الأولية حتى sqrt(n)
  3. غربال إراتوستينس
  4. التحليل إلى العوامل الأولية والقواسم
← العودة إلى Coding Interview Prep