نريد أن نتيح هذا المشروع المفتوح المصدر إلى كل الناس حول العالم. من فضلك ساعدنا على ترجمة محتوى هذه السلسله للغة التى تعرفها.
الرجوع الي الدرس

اعرض الأرقام الأولية

أي رقم صحيح أكبر من 1 يسمى رقم أولي إذا كان لا يقبل القسمة إلا على 1 ونفسه فقط.

مثلًا الرقم 5 هو رقم أولي لأنه لا يقبل القسمة على 2, 3 و 4.

اكتب برنامج يعرض الأرقام الأولية بين 2 و n.

إذا كانت n = 10 يكون الناتج 2,3,5,7.

يجب أن يعمل البرنامج مع أي قيمة ل n وليس قيمة ثابتة.

يوجد العديد من الخوارزميات لهذا السؤال.

دعنا نستخدم حلقات متداخلة:

For each i in the interval {
  check if i has a divisor from 1..i
  if yes => the value is not a prime
  if no => the value is a prime, show it
}

الكود باستخدام عناوين:

let n = 10;

nextPrime:
for (let i = 2; i <= n; i++) { // for each i...

  for (let j = 2; j < i; j++) { // look for a divisor..
    if (i % j == 0) continue nextPrime; // not a prime, go next i
  }

  alert( i ); // a prime
}

يوجد العديد من الطرق لجلعه أفضل. مثلا يمكننا البحث عن القيم التي تقبل القسمة من 2 حتى الجذر التربيعي ل i. ولكن إذا أردنا أن نكون أفضل مع الأرقام الكبيرة يجب استخدام بعض الرياضيات المعقدة وخوارزميات مثل Quadratic sieve, General number field sieve etc.