0Pricing
Competitive Programming Academy · درس

اختبار الأولية حتى sqrt(n)

فحص عدد واحد بكفاءة

اختبار الأولية حتى sqrt(n) درس مجاني في Competitive Programming Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Competitive Programming Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.

سؤال العدد الأولي

من المهارات الأساسية في الرياضيات تحديد ما إذا كان عدد واحد أوليًا. يمتلك العدد الأولي قاسمين بالضبط: الواحد ونفسه. لنختبر ذلك بسرعة. 🔍

الاختبار الساذج

يمكنك تجربة قسمة n على كل عدد من 2 حتى n ناقص 1. هذه الطريقة صحيحة، لكنها بطيئة بشكل مؤلم عندما تكون قيمة n كبيرة.

حيلة الجذر التربيعي

إليك الفكرة الأساسية: لا تحتاج إلى اختبار القواسم إلا حتى الجذر التربيعي لـ n. فلن يظهر أي عامل جديد بعد ذلك.

لماذا يكفي الجذر التربيعي

تأتي القواسم في أزواج حاصل ضربها يساوي n. ولو كان كلاهما أكبر من الجذر التربيعي، لتجاوز حاصل ضربهما قيمة n، وهذا مستحيل.

حدّ الحلقة

كرّر i من 2 ما دام حاصل ضرب i في نفسه لا يتجاوز n. يؤدي استخدام i*i إلى تجنّب أخطاء الفاصلة العائمة التي قد يسببها sqrt مع الأعداد الصحيحة الكبيرة.

while i * i <= n:
    ...

تعامل مع الحالات الصغيرة

الأعداد الأصغر من 2 ليست أولية أبدًا، لذا ارفضها مسبقًا. يحافظ هذا الفحص الوقائي على نظافة الحلقة الرئيسية وصحتها.

if n < 2:
    return False

الدالة كاملة

اجمع الخطوات معًا: افحص القيم الصغيرة، ثم افحص القواسم المحتملة حتى الجذر. وتعني أي قسمة دون باقٍ أن n مركب.

def is_prime(n):
    if n < 2:
        return False
    i = 2
    while i * i <= n:
        if n % i == 0:
            return False
        i += 1
    return True

حسّن السرعة

افحص العدد 2 بشكل منفصل، ثم اختبر الأعداد الفردية فقط. يؤدي تخطي الأعداد الزوجية إلى تقليل العمل إلى النصف تقريبًا دون أي تعقيد إضافي.

if n % 2 == 0:
    return n == 2

التكلفة الزمنية

يعمل هذا الاختبار في زمن O(sqrt n). وبالنسبة إلى عدد واحد لا يتجاوز مليارًا، لا يتطلب ذلك سوى نحو 30,000 عملية بسيطة.

عدد واحد، لا أعداد متعددة

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

تجنّب مشكلة الجذر التربيعي

تجنّب المقارنة باستخدام i*i بدلًا من math.sqrt أخطاء التقريب التي قد تؤدي خطأً إلى قبول الأعداد الحدّية أو رفضها.

تحقق سريع

تأكّد من الحد الذي يجعل هذا الاختبار سريعًا.

مراجعة

يمكنك الآن اختبار أولية عدد واحد في زمن O(sqrt n)، وفحص القيم الصغيرة، وتخطي الأعداد الزوجية، واستخدام i*i للحفاظ على الدقة التامة. ✅

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

هل درس «اختبار الأولية حتى sqrt(n)» مجاني؟

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

ماذا ستتعلم في «اختبار الأولية حتى sqrt(n)»؟

فحص عدد واحد بكفاءة تتمرن على Competitive Programming Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Competitive Programming Academy؟

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

كم من الوقت يستغرق درس «اختبار الأولية حتى sqrt(n)»؟

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

هل يمكنني كتابة وتشغيل أكواد في درس Competitive Programming Academy هذا؟

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

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

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