• 0
Asm4all

نقاش حول الأعداد الأولية

سؤال

تابع سلسلة شغل مخك .....

باستخدام لغتك المفضله - حل هذه المسأله :

الأعداد الأوليه هي الأعداد التي تقبل القسمه على نفسها وعلى الواحد الصحيح فقط

وهي المتتاليه

2,3,5,7,11,13,17,19,23,....

حيث الحد الأول من هذه المتتاليه قيمته (2) والحد الخامس قيمته (11) والحد التاسع قيمته (23) ..

المطلوب : برنامج ندخل اليه ...

أولا : رقم الحد ليعطي قيمته

ثانيا : قيمة الحد ليعطي ترتيبه اذا كان عدد أولي

مثال 1:

ادخل رقم الحد :

رقم الحد : 5 >>> قيمة الحد : 11

رقم الحد : 8 >>> قيمة الحد : 19

مثال 2:

ادخل قيمة الحد :

قيمة الحد : 11 >>> رقم الحد : 5

قيمة الحد : 19 >>> رقم الحد : 8

قيمة الحد : 25 >>> العدد غير اولي

تم تعديل بواسطه Asm4all
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

41 إجابة على هذا السؤال .

  • 0

السلام عليكم ورحمة الله وبركاته

التعريف الصحيح للعدد الأولي هو:

أي عدد مجموع قواسمه إثنين

أو لديه قاسمين

1 ليس عدد أولي :D

ملف تنفيذي لمحاولتي مرفق

بدون مراعات عدة أخطاء

كما يقال Quick & Dirty

مكتوب بدلفي،

سأرفق السورس بعد مشاركة باقي الإخوة

Awali30.rar

تم تعديل بواسطه DeltaAziz
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أنا والله قلت كده لكن ألمسأله جايه بنفس الشكل لقيتها في وسط الملفات عندي فقلت أرفعها

06_10_05_06_31_36_1128605496EXAM3.JPG

عموما مش هي دي المشكله , نفض للواحد :lol:

تم تعديل بواسطه Asm4all
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمة الله وبركاته

اخي Asm4all ارحب بك و بكل المو جودين

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

و السلام عليكم ورحمة الله وبركاته

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
السلام عليكم ورحمة الله وبركاته

  اخي    Asm4all    ارحب بك  و بكل المو جودين

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

و السلام عليكم ورحمة الله وبركاته

منتظرك على أحر من الجمر يا عمار :D

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ماشي بتتخوت اه ماش بسيطة (بمزح) بس والله ان اشاء الله رح اعمله انتظر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

Is 1 a prime number?

I think prime numbers start from 2 not from 1

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

private int GetPrimeOrder(int number)
 {
 
 int primeOrder=0;
 for(int i=2;i<=number;i++)
 {
   if(IsPrime(i))
   primeOrder++;
 }
 return primeOrder;

   
 }
 bool IsPrime(int number)
 {
 
 for(int i=2;i<=number/2;i++)
 {
   if(number%i==0)
   return false;  
 }
 return true;
 }
 private int GetPrimeNumber(int order)
 {
 int primeOrder=0;
 int number=1;
 while(primeOrder<order)
 {
   number++;
   if(IsPrime(number))
   primeOrder++;
   

 }
 return number;
 }

انا حللتها على اعتبار ان الprime numbers تبدا من 2

والسلام عليكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

Hأعتقد لو تم تعديل السؤال لأسرع خوارزمية سيكون أفضل , لأن الأعداد الأولية واضحة بأنا التي تقبل القسمة على نفسها وواحد فقط ,,

فالكل يمكنه تصميم برنامج كهذا , لكن الأسرع ؟

فكرة أخرى , هل العدد 38754743827643827643821760900005324213853217312785432187653214676

أولي أم غير أولي ؟ :D

فكرة أخرى ,, أوجد مليون عدد غير أولي متتالية , يعني 7900000 و 7900001 و 7900002 و 7900003 ...... حتى 8900000 , كل هذه الأعداد غير أولية (" هذا مجرد فكرة وليست غير أولية هنا كلها طبعا , لكن أقصد أنها متتالية " )

لكن الفكرة بأن توجد متتالية أعداد غير أولية الفرق بين كل عدد والذي يليه 1

:D :D

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تم تعديل السؤال , الأعداد الأوليه تبدأ من 2 , 1 لا يعتبر عدد أولي

تم تعديل بواسطه Asm4all
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الحل بلغة سي شارب , خمس دقائق اخرى وارفق الحل باستخدام السي فقط أقوم بعملية التحويل

Asm4all.zip

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

Hأعتقد لو تم تعديل السؤال لأسرع خوارزمية سيكون أفضل , لأن الأعداد الأولية واضحة بأنا التي تقبل القسمة على نفسها وواحد فقط ,,

فالكل يمكنه تصميم برنامج كهذا , لكن الأسرع ؟

خلاص انت الحكمفي الموضوع ده ايه رايك :D ؟

وآدي كود السي

Asm4all.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هناك طريقتين للحل!!

الأولى وضعها الأخ Asm4All .. مع أنك لازم كنت تطول بالك شوي ، قوانين شغل مخك أنك ماتضح الحل بنوب غير إذا وضعو الأخوة محاولتهم بالحل :) ممكن تضع مساعدة من أجل ايجاد الحل إذا ماحدا وضع الحل فهي مشكلة الأعضاء ..

طريقة Asm4All تعمل على أي رقم كان ولكنها بطيئة حيث من أجل كل رقم فيها حلقة تبدأ من 2 إلى جذر الرقم.

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

مثلا نحن نعرف أن العدد 2 أولي ، ولكن أي مضروب له غير اولي اي 4 و 6و 8و 10 و ... غير اولية .

نفس الأمر ينطبق على 3 فهو اولي ولكن اي مضروب له غير اولي اي 6 و 9 و 12 و .. غير اولية ..

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

الكودمرفق لسهولة القرائة ..

primes.c.txt

تم تعديل بواسطه هاني الأتاسي
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مع أنك لازم كنت تطول بالك شوي ، قوانين شغل مخك أنك ماتضح الحل بنوب غير إذا وضعو الأخوة محاولتهم بالحل

بالفعل أنا انتظرت الى ان تم وضع محاولتين للحل , والموضوع كما قال هيثم مش صعب

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

آسف لم أرى سوى حل واحد :) لذلك تجاهل ملاحظتي :)

طبعا يجب الاختيار بين السرعة أو الذاكرة .. وأيضا هل تريد ايجاد حل لرقم واحد أو مجموعة كبيرة من الأرقام .. وهذا يعتمد على حسب التطبيق فإذا كان مجال الأعداد الأولية بين 1 إلى 100K فاستخدام 400 كيلو بايت من الذاكرة في العصر الحالي من الكمبيوترات لا يذكر ابدا ..

فقط ليستفيد الأعضاء هل يمكن أن تشرح لماذا اخترت جذر الرقم عبارة عن الحد الفاصل :rolleyes:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ببساطه لأن جذر الرقم هو أكبر معامل له لن يتكرر مره اخرى , فلما لم أصل مثلا الى النصف ؟ لأنني اختبرت 2 ولم تقبل القسمه , ولم لم تصل الى الثلث ... وهكذا

فأعلى قيمه يمكن أن تضرب في أعلى قيمه , هي الجذر يضرب في نفسه فيعطيك الرقم

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

حسنا ثلاث إستثناءات لطريقة هل يقبل العدد القسمة على الأعداد التي أصغر منه :

1) المضروب كما وضح هاني ,, ومعناه ليس المضروب Factorial بالمفهوم العام , وإنما ضرب العدد في n لكل n=2,3,4...etc

2) أن نجرب القسمة من جذر العدد وحتى 2 فقط

3) كل الأعداد الزوجية غير أولية طبعا , وبذلك نختصر البحث للنصف .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لكي لانخرج من النص , ونضع شغل مخك (31) فما زلنا في الأعداد الأولية ,,

أعود وأقول من يوجد لنا 1000 عدد غير أولي متتالية ,,, يعني 102,103,104,105 ..... حتى 1101 ,, بحيث تكون كل هذه الأعداد غير أولية , وبأي طريقة :D

وفي النهاية سنكتشف أنها فكرة رابعة لتقليل البحث في إختبار العدد الأولي ,, :rolleyes:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لكي لانخرج من النص , ونضع شغل مخك (31) فما زلنا في الأعداد الأولية ,,

أعود وأقول من يوجد لنا 1000 عدد غير أولي متتالية ,,, يعني  102,103,104,105 ..... حتى 1101 ,, بحيث تكون كل هذه الأعداد غير أولية , وبأي طريقة :D

وفي النهاية سنكتشف أنها فكرة رابعة لتقليل البحث في إختبار العدد الأولي ,,  :rolleyes:

اعن نفسي وباستخدام الطريقه السابقه , كنت حابحث عن العدد الأولي واحفظه ثم العدد الأولي الذي يليه , وفي حالة ما يكون الفرق بين الرقمين اكبر من 1001 , يبقى العداد من بعد الرقم الأول الى ما قبل الرقم الثاني

لكن بما انك بتقول ان هناك طريقه اخرى , فنحن في الانتظار :D

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الطريقة ومافيها إن كنتم لاتريدون :D كالتالي :

إذا أردنا الحصول على 1000 عدد غير أولي متتالية , فهي تكون :

1001!+2

1001!+3

1001!+4

1001!+5

1001!+6

etc

1001!+1001

كل هذه الأعداد غير أولية , لأن أي عدد فيها على الأقل تقبل القسمة على عدد من الأعداد من 2-1001 , ويمكن التجربة للتأكد ,

عموما الأعداد الأولية حيرت العلماء ولم يجدو لها صيغة ثابته حتى الآن , وإن وجدو فإن علم arithmatic سيتطور بشكل كبير جدا عما هو عليه الآن ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أولا لتوضيح سبب اختيار الجذر كحد اقصى للاختبار

اليكم هذه الصوره توضح المنحنى Y = Z/X حيث Z هو الرقم المراد اختباره

08_10_05_07_09_10_1128780550Sqrt.jpg

فلو نظرنا الى المنحنى الأزرق سترى أنه متماثل حول الخط Y=X الأخضر ونقطة تقاطع الخط مع المنحنى هي عند النقطه

Y=X=Z^(1/2)

وعند اختبار قسمة Z/X في منطقه من 1 الى جذر Z فان النتائج تكون في Y من جذر Z الى Z

وبم أن المنحنى متماثل فاكيد بالتبديل بين X , Y ستعطي نفس النتيجه , لذلك نختبر نصف المنحنى فقط

فاين نصف المنحنى ؟

من الرسم يتضح أن نصف المنحنى هو عند جذر Z , بعدها يعطي نتائج حصلنا عليها من قبل

تم تعديل بواسطه Asm4all
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا Asm4All على توضيحك :rolleyes: فهو توضيح أفضل من كافي .

هيثم، بصراحة أنا مافهمت بنوب كيف حصلت على هذه ال1000 عدد المتتالية .. :blink: ولكن أعتقد فيها مشكلة ..

1001! + 2 = 1001 * 1000 * 999 * 998 * ..... * 3 * 2 * 1 + 2

أخرج الحد 2 خارج قوس:

= 2 * (1001 * 1000 * 999 * 998 * .... * 3 * 1 + 1)

وبالتالي العدد 1001! + 2 يقبل القسمة على 2؟ كيف تقول أنه أولي؟

ونفس الشي + 3 ، يقبل القسمة على 3 و هكذا ...

إذا كان تحليلي خطأ فسامحني لأني هلأ فايق وراح علي السحور :(

تم تعديل بواسطه هاني الأتاسي
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم،

موضوع جميل،

هل يمكن أن تكتبوا لي كود بأي لغة كانت لإيجاد أكبر عدد أولي؟؟

طبعاً كلنا نعرف أن الأعداد لا منتهية حتى الأن،

ولكن هذا لا يمنع من وجود أكبر رقم أولي يعلمه الإنسان،

هل تستطيعون كتابة كود يستطيع إيجاد عدد أولي كبير جداً؟

مثلاً عدد أولي من 10 منازل ( مراتب)

**********

أمر آخر

الكود الذي تستخدمونه لمعرفة فيما إذا كان العدد أولي أم لا أعتقد أنه غير جيد للأعداد الكبيرة جداً..

عندما نتكلم عن أعداد أولية كبيرة يفضل استخدام Euclidean Algorithm في فحص هذا العدد فيما إذا كان أولياً أما لا

تحية طيبة،

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
أولا لتوضيح سبب اختيار الجذر كحد اقصى للاختبار

اثبات نظري يا اسمبلي للجميع

27_11_05_11_02_56_11331181761.JPG

اضافة الى كل ذلك هناك طريقة سهلة جدا للحصول على عدد اولي عملاق خذ الاعداد الاولية المعروفة واضربها ببعضها واضف واحد الى الناتج ستحصل كل مرة على عدد اولي جديد

ان مشكلة الاعداد الاوليه تعتبراهم المشاكل الموحودة في نظرية الاعداد لمل لها من تطبيقات هامة في مجال التشفير

تم تعديل بواسطه romanof
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

27_11_05_11_02_56_11331181761.JPG

ايه الحلاوه دي دي يا نوووووف , إثبات رياضي جامد :D

:lol: الرسم والحركات دي بيسموها المعنى الهندسي , أكيد شوفت المصطلح ده في كتب قبل كده

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الرسم والحركات دي بيسموها المعنى الهندسي , أكيد شوفت المصطلح ده في كتب قبل كده

انت مش فاكر ان قوانين دي مورغان تم اثباتها بواسطة اشكال فن-ايلر التفسير الهندسي مقبول دائما

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .