كتابة برنامج ++C لطباعة الاعداد الاولية prime numbers
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة السى و السي ++ C :: نقاش و أستفسارات الاعضاء
صفحة 1 من اصل 1 • شاطر
كتابة برنامج ++C لطباعة الاعداد الاولية prime numbers
اهلا بكم
في هذا البرنامج ، سوف نقرأ قيمة N (مدى الأرقام) ونطبع جميع الأعداد الأولية من 2 إلى N....وقبل البدء تعال نفهم ماهية الاعداد الاولية وكيفية حسابها رياضيا
1_مفهوم الاعداد الاولية prime numbers
يمكن تعريف الأعداد الأوليّة (بالإنجليزيّة: Prime Numbers) بأنها الأعداد الصحيحة الموجبة الأكبر من العدد واحد، والتي تقبل القسمة على عددين فقط هما العدد نفسه والواحد دون باقٍ أو فواصل عشرية .
على سبيل المثال، 5 هو عدد أولي لأنه لا يقبل القسمة إلا على 1 وعلى 5 بمعني انه عند القسمة على رقم ما يكون الناتج رقم صحيح بدون فواصل عشرية .
أمّا الأعداد الصحيحة الموجبة الأكبر من واحد، والتي تقبل القسمة على عدد آخر غيره وغير نفسها فتُسمّى بالأعداد غير الأوليّة أو الأعداد المُركَّبة (بالإنجليزية: Composite Number) , فمثلا العدد 6 هو عدد مؤلف لأنه قابل للقسمة على 1، وعلى 2 وعلى 3 وعلى 6
ويجدر بالذكر هنا أن العددان (0,1) يُستبعدان دائماً من قائمتي الأعداد الأوليّة والمُركَّبة ,بينما يُعتبر العدد (2) أصغر الأعداد الأولية، وهو العدد الزوجي الأولي الوحيد
2_كيفية الحساب رياضيا
هناك العديد من طرق الحساب لمعرفة هل عدد معين ما أولي أم لا. أبسطها هي طريقة القسمة المتكررة.حيث تعتبر الطريقة الأكثر بساطة، والأكثر سهولة من حيث الفهم، تتمثل هذه الطريقة في قسمة العدد n على جميع الأعداد الصحيحة الأكبر من الواحد والأصغر من الجذر التربيعي ل n. إذا لم تنتج إحدى هذه القسمات باقيا، فإن العدد n ليس بالأولي. وهو أولي في غير ذلك
3_التطبيق البرمجي
يمكن إستخدام خورزمية القسمة المتكررة لايجاد الاعداد الاولية على النحو التالى :
تبدء حلقة الدوران من العدد 2 حيث انه اول رقم صحيح أكبر من الرقم 1 و تستمر فى الدوران حتى يكون عداد حلقة الدوران اقل من او مساويا لناتج قسمة الرقم المطلوب معرفة انه اولى ام لا على الرقم 2.
داخل حلقة الدوران جملة شرطية للتاكد من ناتج باقي قسمة الرقم على العداد انها تساوي صفر فان كانت كذلك فان العدد اولى وإن كانت غير ذلك فهي رقم مركب.
4_أمثلة متعددة
في هذا البرنامج ، سوف نقرأ قيمة N (مدى الأرقام) ونطبع جميع الأعداد الأولية من 2 إلى N....وقبل البدء تعال نفهم ماهية الاعداد الاولية وكيفية حسابها رياضيا
1_مفهوم الاعداد الاولية prime numbers
يمكن تعريف الأعداد الأوليّة (بالإنجليزيّة: Prime Numbers) بأنها الأعداد الصحيحة الموجبة الأكبر من العدد واحد، والتي تقبل القسمة على عددين فقط هما العدد نفسه والواحد دون باقٍ أو فواصل عشرية .
على سبيل المثال، 5 هو عدد أولي لأنه لا يقبل القسمة إلا على 1 وعلى 5 بمعني انه عند القسمة على رقم ما يكون الناتج رقم صحيح بدون فواصل عشرية .
أمّا الأعداد الصحيحة الموجبة الأكبر من واحد، والتي تقبل القسمة على عدد آخر غيره وغير نفسها فتُسمّى بالأعداد غير الأوليّة أو الأعداد المُركَّبة (بالإنجليزية: Composite Number) , فمثلا العدد 6 هو عدد مؤلف لأنه قابل للقسمة على 1، وعلى 2 وعلى 3 وعلى 6
ويجدر بالذكر هنا أن العددان (0,1) يُستبعدان دائماً من قائمتي الأعداد الأوليّة والمُركَّبة ,بينما يُعتبر العدد (2) أصغر الأعداد الأولية، وهو العدد الزوجي الأولي الوحيد
2_كيفية الحساب رياضيا
هناك العديد من طرق الحساب لمعرفة هل عدد معين ما أولي أم لا. أبسطها هي طريقة القسمة المتكررة.حيث تعتبر الطريقة الأكثر بساطة، والأكثر سهولة من حيث الفهم، تتمثل هذه الطريقة في قسمة العدد n على جميع الأعداد الصحيحة الأكبر من الواحد والأصغر من الجذر التربيعي ل n. إذا لم تنتج إحدى هذه القسمات باقيا، فإن العدد n ليس بالأولي. وهو أولي في غير ذلك
3_التطبيق البرمجي
يمكن إستخدام خورزمية القسمة المتكررة لايجاد الاعداد الاولية على النحو التالى :
- الكود:
for count in range(2;count<=num/2;count++))):
if (num%count==0):
return True
break
return False
تبدء حلقة الدوران من العدد 2 حيث انه اول رقم صحيح أكبر من الرقم 1 و تستمر فى الدوران حتى يكون عداد حلقة الدوران اقل من او مساويا لناتج قسمة الرقم المطلوب معرفة انه اولى ام لا على الرقم 2.
داخل حلقة الدوران جملة شرطية للتاكد من ناتج باقي قسمة الرقم على العداد انها تساوي صفر فان كانت كذلك فان العدد اولى وإن كانت غير ذلك فهي رقم مركب.
4_أمثلة متعددة
- أكتب برنامج بلغة السي بلس بلس للتأكد من أن العدد 29 عدد أوليا أم لا ؟
- الحل مع الشرح:
فى هذا المثال سنقوم بانشاء وظيفة باسم isPrime() لتأخذ عددًا صحيحًا وتعيد العدد 1 إذا كان الرقم أوليًا و 0 إذا لم يكن الرقم أوليًا على النحو التالى :- الكود:
#include <iostream>
using namespace std;
int isPrime(int num) // وظيفة للتاكد من الرقم المدخل
{
int prime=1; // متغير لتخزين قيمة واحد للمقارنة
for(int i=2;i<=(num/2);i++) // حلقة دوران تبدء من العدد 2
{
if(num%i==0) // جملة شرطية للتاكد من ناتج قسمة الرقم بدون ارقام عشرية
{
prime=0; // تغير قيمة المتغير الى الصفر اذا تحقق الشرط
break; // إنهاء حلقة التكرار
}
}
return prime; // ارجاع قيمة متغير المقارنة
}
int main()
{
int n; //لتخزين الرقم المدخل
cout<<"Enter the Number: ";
cin>>n;
if (isPrime(n)==1) // إستخدام الوظيفة لمقارنة قيمة ارجاعها
cout << n << " is a prime number";
else
cout << n << " is not a prime number";
return 0;
}
- أكتب برنامج بلغة السي بلس بلس لطباعة كافة الارقام الاولية حتى العدد n ؟
- الحل مع الشرح:
فى هذا المثال ايضا سنقوم بانشاء وظيفة باسم isPrime() لتأخذ عددًا صحيحًا وتعيد العدد 1 إذا كان الرقم أوليًا و 0 إذا لم يكن الرقم أوليًا على النحو التالى :- الكود:
int isPrime(int num) // وظيفة للتاكد من الرقم المدخل
{
int prime=1; // متغير لتخزين قيمة واحد للمقارنة
for(int i=2;i<=(num/2);i++) // حلقة دوران تبدء من العدد 2
{
if(num%i==0) // جملة شرطية للتاكد من ناتج قسمة الرقم بدون ارقام عشرية
{
prime=0; // تغير قيمة المتغير الى الصفر اذا تحقق الشرط
break; // إنهاء حلقة التكرار
}
}
return prime; // ارجاع قيمة متغير المقارنة
}
لكن فى الوظيفة الرئسية سنقوم بتغير الكود وذلك باستخدام بانشاء حلقة تكرار للمرور على كافة الارقام التى ستبدء من العدد 2 و تنتهي بالرقم n المجهول الذي سيدخلة المستخدم ومن ثم تمرير كل رقم فى نطاق تلك الارقام الى الوظيفة isPrime للتاكد انها اولية ثم طباعتها وذلك على النحو التالى :- الكود:
#include <iostream>
using namespace std;
int isPrime(int num) // وظيفة للتاكد من الرقم المدخل
{
int prime=1; // متغير لتخزين قيمة واحد للمقارنة
for(int i=2;i<=(num/2);i++) // حلقة دوران تبدء من العدد 2
{
if(num%i==0) // جملة شرطية للتاكد من ناتج قسمة الرقم بدون ارقام عشرية
{
prime=0; // تغير قيمة المتغير الى الصفر اذا تحقق الشرط
break; // إنهاء حلقة التكرار
}
}
return prime; // ارجاع قيمة متغير المقارنة
}
int main()
{
int n; //لتخزين الرقم المدخل
cout<<"Enter the Number: ";
cin>>n;
for(int i=2;i<n;i++) // المرور على كافة الارقام من العدد 2 حتى العدد المدخل من المستخدم
{
if(isPrime(i)) // استخدام الوظيفة للتاكد من الاعداد المدخلة اليها
cout<<i<<" "; // طباعة الاعداد الاولية
}
cout<<endl;
return 0;
}
- أكتب برنامج بلغة السي بلس بلس لطباعة كافة الارقام الاولية من 50 العدد 150 ؟
- الحل مع الشرح:
- الكود:
#include <iostream>
using namespace std;
int isPrime(int num) // وظيفة للتاكد من الرقم المدخل
{
int prime=1; // متغير لتخزين قيمة واحد للمقارنة
for(int i=2;i<=(num/2);i++) // حلقة دوران تبدء من العدد 2
{
if(num%i==0) // جملة شرطية للتاكد من ناتج قسمة الرقم بدون ارقام عشرية
{
prime=0; // تغير قيمة المتغير الى الصفر اذا تحقق الشرط
break; // إنهاء حلقة التكرار
}
}
return prime; // ارجاع قيمة متغير المقارنة
}
int main()
{
for(int i=50;i<=150;i++) // حلقة دوران تبدء من النطاق المحدد 50 الى 150
{
if(isPrime(i)) // استخدام الوظيفة للتاكد من الاعداد المدخلة اليها
cout<<i<<" "; // طباعة الاعداد الاولية
}
cout<<endl;
return 0;
return 0;
}
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
| |
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة السى و السي ++ C :: نقاش و أستفسارات الاعضاء
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
» شركة تنظيف مسابح بالرياض
» "بروتين بعد التكميم فوائد البروتين بعد التكميم بروتين بودر بعد التكميم"
» اشهر نسخ واتساب بلس 2023 whatsapp plus
» متجر مجوهرات دير: إشراقة الذهب الخالص
» صراف صينى مقاس57*40
» فلاي تورز: اكتشف عالمًا من السفر والسياحة المثيرة
» متجر yallaa kids : مصدر الإبداع والتعلم للأطفال
» افضل تمويل
» "اقوي عروض المساج "