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

سؤال في c++ خوارزمية ال prime number لماذا يكون طول مجال الاختبار أصغر من نصف العدد

ناصر اليامي ممممم

السؤال

Recommended Posts

  • 0

من فضلك إرفاق البرنامج بشكل مكتوب و ليس كصورة.

عندما نريد اختبار هل العدد أولي أم لا، نختبر قابلية القسمة على الأعداد الأصغر منه، أي نعمل حلقة من 2 إلى ما قبل هذا العدد وليكن عداد الحلقة هو متغير i كما هو لديك، في حال قبل العدد num القسمة على اي i من المحال يعتبر العدد غير أولي لأن لديه قاسم مختلف عن 1 و عن نفسه.

لكن بغرض تحسين الخوارزمية، بتطبيق ملاحظة رياضية أنه لو قبل العدد القسمة على i فإن ناتج القسمة سيكون num/i 

طالما قمنا باختبار القسمة على i لاداع لاختبار القسمة أيضا على num/i ، أي نكتفي بنصف مجال الأعداد الصغير لاختبار القسمة، 

لماذا num/2 .. إن لم يقبل num القسمة على 2 فإنه لن يقبل القسمة على (num/2) وهو نفسه ناتج قسمة العدد عل 2.

مثلا عددي: ليكن لدينا 10 نريد التحقق هل هو اولي؟ نختبر المجال من 2 إلى 4 فقط، لأن 5 هي نفسها 10/2 اي في حال قبلت 10 القسمة على 2 فلماذا نختبر 10/5؟ 

نفس الشيء للعدد 13 لا يهمنا اختبار الأعداد التي هي أكبر من نصف هذا العدد لأن 13/7 و 13/8 بالطبع لن تقبل القسمة..

يمكنك عمل الحلقة ل أصغر من num/2 

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...