استيقظت اليوم و انا افكر فى الـ prime factors الخاصه بالرقم 132 (تحدث لي مثل هذه الأمور كما اعتقد انها تحدث للغير)، و بعد ان عرفت الإجابه - و هي 2 * 2 * 3 * 11 - فكرت فى صناعة برنامج أقوم بإدخال الرقم إليه و يقوم هو بإخراج لي الـ prime factors.
المقصود بالـ prime factorization هو أن كل رقم يمكن تمثيله بمجموعه من الأعداد الأوليه - كما حدث مع الرقم 132.
خطوات عمل البرنامج بسيطه، و المتطلبات وجود مصفوفه للأعداد الأوليه:
1- يقوم المستخدم بإدخال الرقم.
2- إذا كان الرقم أقل من 3 و اكبر من -3 يطبع الرقم كما هو و يتم الإنهاء.
3- يتم الحصول على القيمه المطلقه للرقم المدخل و تخزين الإشاره فى مكان منفصل.
4- يتم الدوران على كل عناصر مصفوفه الأعداد الأوليه.
5- يتم الذهاب إلى الخطوه التاليه طالما يوجد عدد اولي و ان الرقم (من الخطوه 3) لا يساوى 1 و غير ذلك يتم الذهاب للخطوه 9.
6- يتم الحصول على باقي قسمة الرقم (من الخطوه 3) من العدد الأولي.
7- إذا كان باقي القسمه لا يساوي صفر يتم الذهاب إلي 4، إذا كان باقي القسمه صفر يتم الإكمال.
8- يتم طباعة العدد الأولي و يتم الحصول على قسمة الرقم (من الخطوه 3) من العدد الأولي و إبدال الرقم (من الخطوه 3) بنتيجة القسمه و يتم الذهاب إلي 3.
9- إذا كانت الإشاره سالبه يتم ضرب أى من الأعداد الأوليه فى -1.
الطبيعي ان يكون الرقم المدخل أكبر من 1 و لكني وجدت ان وجود الأعداد السالبه لن يعقد البرنامج كثيرا.
الخطوات السابقه ستتيح لك الحصول على الأعداد الأوليه لأى رقم و لكن الهدف لدي ليس الحصول على الأعداد الأوليه فقط و لكن الحصول عليها منظمه بمعني تجميع الأعداد المتشابهه معا بإستخدام علامة الأس و هذا ما فعلته.
هذه أحد النتائج:
enter number: 1919191919 result is: 19 * 41 * 271 * 9091 Press any key to continue . . . enter number: 3654120 result is: 2^3 * 3 * 5 * 37 * 823 Press any key to continue . . .
المرفقات هي الملف prime_gen و الذى يقوم بتوليد ملف يحتوى على مصفوفه بالأعداد الأوليه و المرفق الثاني هو برنامج prime_fac
تم تحديث المرفقات لوجود خطأ فى الداله isPrime بالبرنامج prime_gen، الخطأ كان فى الزياده داخل الحلقه حيث من المفترض ان يكون 2 بدلا من 3، إذا قمت بتغييرها بنفسك فلا تنسي إعادة بناء المصفوفه primes لحذف الزوائد منها.
و الله ولي التوفيق