كود بلغة البايثون لوجود عددين على انه العددين اوليين ام لا.
ارجو من الاعضاء التى لهم خبرة فى بلغات البرمجة ان يشاركوا بكتابة كود الاعداد الاولية بلغة البرمجة الخاصة بهم.
هذا رابط :
http://up.harajgulf.com/do....اقتراحتكم حول الموضوع
كود بلغة البايثون لوجود عددين على انه العددين اوليين ام لا.
ارجو من الاعضاء التى لهم خبرة فى بلغات البرمجة ان يشاركوا بكتابة كود الاعداد الاولية بلغة البرمجة الخاصة بهم.
هذا رابط :
http://up.harajgulf.com/do....اقتراحتكم حول الموضوع
لا ادري ماتحاول فعله بالضبط ؟ التحقق من ان العددين اولين ؟
لا ادري لما تعقد الامور و ايضا ال Complexity هي O(n^2)
هذا naive algorithm ليس سئ جدا ايضا ال complexity هي O(sqrt(n))
اقتراح لتحسين الكود
بدلا من استدعاء math.sqrt قم برفع العدد الى القوة 0.5
for i in xrange( 3, int(x**0.5)+1, 2 ):
@محمد عزيز الكناني قمت بعمل benchmark بسيط math.sqrt كانت اسرع بفارق بسيط
هذا هو الكود
وهذه النتيجة على جهازي
@محمد عزيز الكناني حضرتك قصدك ان الكود ضعيف من ناحية الخوارزمية التى يعمل عليها
يعنى يجب ان يكون مبسط بهذا الشكل :
هذا البرنامج برمجته إطلع على الكود الخاص به
تم إستخدام لغة javascript
@zakariamouhid رائع لقد اعجبنى البرنامج بالتوفيق
@afaki لانه الاخ @zakariamouhid يعمل على القسمة على 2 فاذا كان العدد 9 سوف يكتب 9 دون اى شئ واذا كتبت 2 سوف يفعل كما يفعل 9 لكن مع 7 و 5 يعمل لكن لا افهم لماذا لا يعمل مع 3
ليكن العدد المدخل هو 19
سيبدأ البرنامج بحساب باقي قسمة 19 على 2 ( 1 = 2%19 )
فإذا وجد الباقي 0
يتوقف و يعطي النتيجة
أما إن كان الباقي يخالف 0
يحسب باقي قسمة 19 على 3 ( 1 = 3%19 )
فإذا وجد الباقي 0
يتوقف و يعطي النتيجة
أما إن كان الباقي يخالف 0
وبنفس الطريقة إلى أن يصل إلى الجذر التربيعي ل 19 الذي يساوي تقريبا 4.358898944
تجربة الأعداد الأصغر من الجذر التربيعي ل 19 يكفي ليبين أنه لا يقبل القسمة على أي عدد أصغر من 19
ثم يقول هذا العدد أولي
0000000000000000
البرنامج يقسم العدد على الأعداد الأصغر من جذره التربيعي
وعندما يقبل العدد القسمة على عدد ما يتوقف عن حساب الأعداد التالية ويجيبك بأن العدد ليس أوليا
0000000000000000
التعليقات