ممكن مساعدة من أصحاب الخبرة في php

  • YounesSan

ممكن مساعدة لأصحاب الخبرة في لغة php ,

أثناء برمجتي لسكربت التحقق إذا كان العدد اولي أم لا واجهت مشاكل .

هل أسأت إستعمال عبارة For ؟

الخواريزمية التي اتبهتعا بإختصار هي :

إعطاء الجدر التربيعي للعدد الذي تم إدخاله و تجربة قسمته على جميع الأعداد الأصغر من جدر مربعه و الأكبر من 2 إذا كان باقي قسمته ( جدر مربع العدد ) على أي عدد بين 2 و الجدر التربيعي للعدد هو 0 يكون عددا ليس أوليا و إذا لم يكن 0 فهو أولي ..

الكود البرمجي من هنا :

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

YounesSan أضف ردا

إرتكبت خطأ أيضا عندما كتبت

if($sqrtn%$i==0)

كان يجب علي كتابة

if($number%$i==0)

و أيضا يجب أن أكتب مكان

for($i=2;$i<$sqrtn;$i++)

هذا

for($i=2;$i<=$sqrtn;$i++)

على ما أظن

zakariamouhid أضف ردا

لا يجب طباعة " هذا العدد أولي" إلا بعد تجربة قسمته على جميع الأعداد الأولية الأصغر من جذره التربيعي

      var button = document.getElementById("button");
      var p = document.getElementById("p");
      button.onclick = function () {
          p.innerHTML = "";
          var n = Number(document.getElementById("input").value);
          var sqrt_n = Math.sqrt(n);
          var adad_awali = true;
          if (n != parseInt(n)) {
              n = parseInt(n);
          }
          if (n > 9) {
              for (var i = 2; i < sqrt_n; i++) {
                  if (n % i == 0) {
                      p.innerHTML = "هذا العدد ليس أوليا";
                      adad_awali = false;
                  }
                  if (i == parseInt(sqrt_n) - 1 && adad_awali == true) {
                      p.innerHTML = "هذا العدد أولي";
                  }
              }
          } else if (n == 2 || n == 3 || n == 5 || n == 7) {
              p.innerHTML = "هذا العدد أولي";
          } else if (n == 4 || n == 6 || n == 8 || n == 9) {
              p.innerHTML = "هذا العدد ليس أوليا";
          }
      };

المشكلة القائمة حاليا أنه يطبع لي " عدد أولي " عدة مرات ولا حظت أن عدد المرات التي تطبع فيها هي نفسها جدر مربع العدد الذي أدخله -2

يجب أن تضع في الأول متغيرا adad_awali قيمته true 

فإذا تحقق الشرط (n % i == 0) يجعل قيمة المتغير adad_awali تساوي false ويطبع ليس أولي

و إذا لم يتحقق الشرط نأتي بشرط آخر هو 

( i == parseInt(sqrt_n) - 1 && adad_awali == true )

ويعني هذا الشرط إذا كانت قيمة adad_awali تساوي true

و كان i يساوي آخر قيمة ممكنة له وهي parseInt(sqrt_n) - 1

فإذا تحقق يكون العدد أوليا

بالمناسبة فالأعداد التي تصلح معهم هذه الطريقة هي الأعداد الأكبر من 9

شكرا جزيلا لك ..

لا مشكلة إذا كانت الأعداد التي تصلح معهم هذه الطريقة هي الأعداد الأكبر من

9

..

يمكنني أن أدرج الأعداد الأصغر من 9 في شرط ليطبع هل عدد أصغر من 9 اولي أم لا ...

وجيه عوض الجيد أضف ردا

اليك قاعدة لمعرفة أن العدد اولي أم لا

العدد الاولي لايقبل القسمة على اي من الاعداد بين القوسين(2,3,5,7)

هذا غير كافي

مثلا 121 لا يقبل القسمة على تلك الاعداد لكنه ليس اولي لانه يقبل القسمة على 11 ..

العدد الاولي هو العدد الذي لديه قاسمان فقط هو ونفسه ..

يعني لمعرفة هل عدد اولي نرى هل يقبل القسمة هل جميع الاعداد الاولية الاصغر من جدره التربيعي

وجيه عوض الجيد أضف ردا

اذا اضفنا شرط عدم وجود جزر صحيح للعدد الا يكون كافي

ammar alsory أضف ردا

موجود التجريب وتحته الكود