اذهب إلى المحتوى
  • 0

خطأ في كود جافاسكربت لاستخراج الأعداد الأولية

محمد حسن21

السؤال

هذا الكود يقوم باستخراج الاعداد الاولية 

اقتباس

 

function ShowPrimes(limit) {




    for (let number = 2; number <= limit; number++) {

        let isPrime = true;

        for (let factor = 2; factor < number; factor++) {

            if (number % factor === 0) {

                isPrime = false;

                break;

            }

        }

        if (isPrime) console.log(number);

    }

}

ShowPrimes(500);

لماذا يعطي ناتج صحيح مع العلم ان المعامل = الرقم وليس اصغر منه

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0
بتاريخ 9 ساعات قال مصطفى القباني:

لاحظ أن عند كون قيمة الرقم 2 وكذلك الفاكتور 2، لن يتم الدخول في الloop الداخلية من الأساس، لأن الشرط في الloop هو:


for (let factor = 2; factor < number; factor++)

الشرط هنا أن يكون factor أقل من number، وهو غير متحقق، لذلك لن يتم الدخول في الloop الداخلية في الحالة التي ذكرتها، وسيتم عمل console.log للرقم 2 على أنه prime، لأن قيمة isPrime مازالت true.

@محمد حسن21

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 2 دقائق مضت قال Yomna Raouf:

هل يمكنك توضيح المقصود ب المعامل = الرقم و ليس أصغر منه؟؟ حتى أتمكن من مساعدتك.

اعني انا قم بوضع number % factor === 0 

وقمت بوضع قيمة الرقم 2 وكذلك factor = 2 فلماذا قام بتنفيذ الكود

تم التعديل في بواسطة محمد حسن21
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 8 ساعات قال محمد حسن21:

اعني انا قم بوضع number % factor === 0 

وقمت بوضع قيمة الرقم 2 وكذلك factor فلماذا قام بتنفيذ الكود

السبب هو أن هذه العملية % تسمى باقي القسمة و باقي قسمة 2 % 2 تساوي صفر.

إذًا سيكون ناتج الشرط true لذلك عمل الكود.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 2 ساعات قال محمد حسن21:

اعني انا قم بوضع number % factor === 0 

وقمت بوضع قيمة الرقم 2 وكذلك factor = 2 فلماذا قام بتنفيذ الكود

لاحظ أن عند كون قيمة الرقم 2 وكذلك الفاكتور 2، لن يتم الدخول في الloop الداخلية من الأساس، لأن الشرط في الloop هو:

for (let factor = 2; factor < number; factor++)

الشرط هنا أن يكون factor أقل من number، وهو غير متحقق، لذلك لن يتم الدخول في الloop الداخلية في الحالة التي ذكرتها، وسيتم عمل console.log للرقم 2 على أنه prime، لأن قيمة isPrime مازالت true.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...