الرجوع الي الدرس

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

أي رقم صحيح أكبر من 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.