اعرض الأرقام الأولية
أي رقم صحيح أكبر من 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.