الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اعداد ارمسترونغ

بدأه aziz nor في 23 نوفمبر 2008 · 10 رد · 2,469 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

انا اليوم جايب معاي معلومة جديدة وممتعة

وتفيد اي شخص يحب الخوارزميات والبرمجة

الموضوع بعنب يكاد يكون ظاهر من عنوانه

الا وهو اعداد ارمسترونغ

وبدون اطالة عليكم

اليكم تعريف هذه الاعداد

ان من بين جميع الاعداد الطبيعية الاكبر من واحد

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

وهي تسمي اعداد مكعبة

مثلا

لتوضيح فقط الكتابة

3^3

هي تعني ثلاثة اس ثلاثة وليس 3 في ثلاثة

لعدم توفر رمز الاس فقط لاغير

المثال

1^1+5^5+3^3=153

وارجو ان يكون المثال واضح

الان ما الفائدة من كل هذا

يمكن لااي شخص ان يكتب خوارزمية لتحقق من ان عدد معين هو من اعداد ارمسترونغ

او مثلا ايجاد كل الاعداد لان عددها ضغير فهي مجموعة منتهية

وهي محصورة مابين

150 الي 410

كما يمكن ايضا ان تستعمل لتشفير

والي الملتقي

تم تعديل هذه المشاركة بواسطة djug في 5 ديسمبر 2008 في 12:01 — السبب: تم استبدال * بـ ^

اللهم صلي علي المصطفي محمد

صلي الله عليه وسلم

#2

حقيقة موضوع جميل جدا ..

سمعت سابقا عن هذه الاعداد ..

ولولعي بعلم التشفير ..

سأقوم بالبحث معك عن هذه الاعداد وسأضع لها خوارزمية تميز بينها وبين البقية ..

تحياتي العطرة ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#3

جميل جدا .

سبحان الله ليس منها غير أربعة فقط !.

هل هناك برهان رياضي يثبت ان ليس هناك غير الاربعه اعداد.؟؟.

عملت كود بالسي يختبر هل العدد يحقق الشرط ام لا؟

وجربته على الاعداد الى 1000000 ظهر لي فقط 153 , 370 , 371 , 407 .

وهذا الكود :

  1. #include<cmath>
  2. #include<iostream>
  3. #include<sstream>
  4. using namespace std;
  5.  
  6. bool is_Narcissistic_number(int num)
  7. {
  8. char t;
  9. int sum=0;
  10. stringstream oo;
  11. oo<<num;
  12. while(oo>>t)
  13. sum+=pow(float(int(t)-int('0')),3);
  14. return (sum==num && num>1);
  15. }
  16.  
  17. int main(int argc, char *argv[])
  18. {
  19.  
  20. for(int i=1;i<1000000;i++)
  21. {
  22. if(is_Narcissistic_number(i))
  23. cout<<"Narcissistic number="<<i<<endl;;
  24. }
  25.  

tvquran_6.gif

#4

السلام عليكم

نشكر كل الاخوة علي التفاعل مع الموضوع

وشيء رائع اني لما دخلت الي الموضوع وجدت الكود مكتوب كاملا

وانا كنت في نيتي ان اضع طريقة لعمل الخوارزمية لكن الاخ فهد كفي ووفي ولله الحمد

.وقد وضع الاخ فهد كود لتحقق من ان اي عدد يمكن ان يكون من اعداد ارمسترونغ

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

وهي اولا نعتمد علي ان اعداد ارمسترونغ محصورة مابين

150 الي 410

يعني هي مكونة من

احاد وعشرات ومئات

ولمن اراد اعداد اكبر يمكن اظافة فئة الالاف

المهم الفكرة هي ان نجد طريقة لتفكيك العد وهي كتالي مثلا عندنا

180

نقول ماهي الطريقة لنحصل علي العدد 180 او بالاحري مفكوك العدد 180 ومن ثم نضع اعداده في متغيرات

مثلا

a=0

b=8

c=1

ومن ثم نقوم بوضع الشرط وهو ان يكون

a^3+b^3+c^3=abc

اذا تحققق الشرط يكون العدد من اعداد ارمسترونغ

وللمساعدة في اول متغير اقول يمكننا الحصول علي اول متغير وذالك بقسمة العدد علي 100

وهكذا

ارجو ان تكون فكرتي وصلت وشكرا

تم تعديل هذه المشاركة بواسطة djug في 5 ديسمبر 2008 في 12:03 — السبب: تم استبدال * بـ ^

اللهم صلي علي المصطفي محمد

صلي الله عليه وسلم

#5

فهد .. كما عهدتك .. تفسد ما اريد القيام به دائما ..

اهلا بك اخي .. وشكرا لك ..

============================

a*3+b*3+c*3=abc

صراحة .. غير واضح ..

فهي لاتحقق الرقم 410 الذي هو من الاعداد .. وضح ذلك رجاءا ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#6

سنان هذا عصر السرعة.

بالنسبة للـ (a*3+b*3+c*3=abc).

فيقصد a^3+b^3+c^3=a*100+b*10+c

ايضا 410 ليس منها اصلا.

هي فقط 4 اعداد: 153 , 370 , 371 , 407

tvquran_6.gif

#7

السلام عليكم

الاخ سنان لتوضيح فقط وكما اشار الاخ فهد

ان اعني ب

a^3

يعني المتغير

a

مرفوعا الي الاساس ثلاثة

وارجو ان تكون المعلومة وضحت الان

تم تعديل هذه المشاركة بواسطة djug في 5 ديسمبر 2008 في 12:05 — السبب: تم استبدال * بـ ^

اللهم صلي علي المصطفي محمد

صلي الله عليه وسلم

#8

وضحت الان شكرا لكم ..

اقتباس
ايضا 410 ليس منها اصلا.

اعذرني فقد فهمت هذه الجملة

اقتباس
150 الي 410

خطأ ..

تحياتي العطرة ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#9

تم استبدال * بـ ^ لكي يسهل الفهم

أخي aziz nor لكتابة الرمز ^ لما تستعمل لوحة المفاتيح الفرنسية اضعط على الحرف ج (على يمين حرف P) و من بعدها اضغط على space ليظهر الرمز (يمكنك أيضا اسعمال نفس المفتاح متبوعا بحرف آخر مثل e و a لكتابة كل من ê و â )

#10

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

أصلا أعداد أرمسترونج ليست الأعداد التي تساوي مجموع مكعبات أرقامها فهذا التعريف غير صحيح

أعداد أرمسترونج هي الأعداد التي تساوي مجموع أرقامها بعد رفعها لقوة مساوية لعدد خانات العدد

يعني العدد 1634 يعتبر من أعداد أرمسترونج

mimetex.cgi?1%5E4+6%5E4+3%5E4+4%5E4=1634

من أقوال الأئمة

الإمام علي بن أبي طالب -رضي الله عنه-: "الناس ثلاثة : فعالم رباني ، ومتعلم على سبيل النجاة ، وهمج رِعاع غوغاء أتباع كل ناعق ، يميلون مع كل ريح ، لم يستضيئوا بنور العلم ، ولم يلجئوا إلى ركن وثيق".

الإمام مالك -رحمه الله- : " لن يصلح آخر هذه الأمة إلا بما أصلح به أولها ".

الإمام الأوزاعي -رحمه الله- : " عليك بآثار من سلف وإن رفضك الناس وإياك وآراء الرجال وإن زخرفوه لك بالقول ".

الإمام الفضيل بن عياض -رحمه الله- : " عليك بطرق الهدى و لا يضرك قلة السالكين و إياك و طرق الضلالة ولا يغرك كثرة الهالكين ".

علامة الزمان الإمام الألباني -رحمه الله- : " إن الخلاص إلى أيدي هؤلاء الشباب يتمثل في أمرين لا ثالث لهما ؛ التصفية والتربية ".

وكل خير في اتباع من سلف وكل شر في ابتداع من خلف

#11
اقتباس
المهم الفكرة هي ان نجد طريقة لتفكيك العد وهي كتالي مثلا عندنا

180

نقول ماهي الطريقة لنحصل علي العدد 180 او بالاحري مفكوك العدد 180 ومن ثم نضع اعداده في متغيرات

مثلا

a=0

b=8

c=1

هناك طريقة أبسط لكن بزمن تعقيد أكبر :)

ماذا لو قمنا بالآتي ؟

for(int a=0;a<=9;a++)
{
for(int b=0;b<=9;b++)
{
for(int c=0;c<=9;c++)
{
//here u can do whatever you want; but notice that a is the most significant :)
}
}
}

بالطبع , ما سبق يصلح لعدد من ثلاث خانات

لكن كما قلت لك التعقيد الزمني كبير

شكراً .

تم تعديل هذه المشاركة بواسطة مختار سيد صالح في 25 ديسمبر 2008 في 01:55

مواضيع مشابهة