أهلا ومرحبا.
أود أن أقدم أ إظهار حل لتحدينا
السابق الذي هو كتابة برنامج يولد الأعداد
الأولية.
ومرة أخرى ، بيت القصيد من هذا البرنامج كان استخدام مصفوفة
، تريد أن تتعلم كل شيء حول المصفوفات والقيام بذلك.
لذلك حاولت أن أصف خوارزمية العدد الأولي من قبل.
ولكن لأذكرها مرة أخرى ، يمكنك التحقق مما إذا كان العدد
الأولي عددًا أوليًا أم لا.
العدد الأولي يعني ذلك أه لا يقبل القسمة
على أي عدد أولي آخر.
إذن هذه هي خوارزمية الفكرة التي سنمر بها.
والسبب لهذا السبب العدد الأولي لأنه يمكن التعبير عن أي عدد صحيح
غير أولي كمضاعف للعوامل الأولية.
لذلك على سبيل المثال 20 لديه العوامل الأولية 2 2 و 5.
لذلك من خلال معرفة هذا ، هذا يخبرك أن الأعداد الأولية لا تقبل القسمة
على أي عدد أولي آخر.
لذلك يمكن أن يساعد هذا في صنع ملف اختبار عدد أولي فعال.
إذن ما يمكنك فعله هو أنت يمكن التحقق من الأعداد الأولية
التي تم إنشاؤها مسبقًا.
حتى نتمكن من تخزين ما سبق أنشأنا أعدادًا
أولية في مصفوفة ، وهكذا يمكن العثور على هذه المعلومات.
أيضا أي 9 عدد صحيح ن يجب أن أن يكون أحد عوامله عددًا صحيحًا
أقل من أو يساوي الجذر التربيعي لـ n.
لذلك هذا يعني أنه ضروري فقط لتحديد ما إذا كان عدد صحيح معينًا أوليًا عن
طريق اختباره لعدد زوجي القابلية للقسمة مقابل جميع العوامل الأولية حتى الجذر
التربيعي للعدد الصحيح.
لذا يمكنك التوقف عند هذا الحد و مرة أخرى يجعله أكثر كفاءة.
سيكون هذا ملحوظًا في الحلقة الداخلية الخاصة بي عندما
أقفز لتحديد ما إذا كنت لم يتم العثور على عدد أولي.
سأقفز إذا أردت ذلك الجذر التربيعي للعدد الصحيح ، إنه
شرط خروج أساسًا.
لذلك دعونا نذهب والطريق يمكنك التحقق
من ذلك هو أنك تقول فقط p مقسومة على الأعداد الأولية أكبر من العدد الأولي الفرعي I ، وسنستخدم
ذلك في الحلقة الداخلية لـ اختبر ما إذا كانت قيمة p أكبر من الجذر
التربيعي لـ I.
لذلك دعونا نمضي قدمًا ونطرح الكود كتل لبدء كتابة بعض التعليمات البرمجية.
سنفعل الأساسيات هنا ، قم بإنشاء مشروع.
سنقوم بتسمية مشروعنا يسمى الأعداد الأولية.
لذلك دعنا ننتقل إلى
مشروع جديد ، ودعنا ننتقل إلى تطبيق وحدة التحكم.
وسنسميها الأعداد الأولية.
قل بعد ذلك ، لن نذهب لاستخدام هذا المترجم.
كنت ألعب مع المترجمين أريد التأكد من أن لدي المترجم
المناسب الذي سأفعله فقط استخدم مترجم cygwin.
لذلك فهو يولد رئيسي ملف المصدر ، وهو فارغ.
دعنا نتخلص من printf وابدأ في كتابة بعض التعليمات البرمجية.
سنقوم بتضمين ملف ملف يسمى معيار الثور.
لم أفعل هذا بعد ؛ لقد كنت إنشاء القيم المنطقية الخاصة بي كشرطات سفلية.
دعونا نجري اختبارًا بسيطًا ، أريد أن أكون قادرًا على فعل منطقي.
الآن يمكننا استخدام القيم المنطقية.
عادة في C89 ، نوع البيانات لقيمة صواب أو خطأ هو منطقي تسطير أسفل السطر.
لكن يمكنك في الواقع أن يكون لديك نوع التعريف في الإصدارات الأحدث وفي ملف
bool القياسي إلى فقط استخدم bools ويسمح لك أيضًا
باستخدام true false كقيم.
لذلك علينا أن نصنع البعض المتغيرات هنا أولا.
سنقوم بإنشاء العداد الخاص بنا الذي سنطلق عليه اسم p.
سيكون هذا هو العداد لدينا للحلقة الخاصة بنا
من عندما نتحقق من p إلى 100 رقم.
ستكون هذه الحلقة الخارجية.
سنقوم أيضًا بإنشاء ملف متغير لعداد الحلقة الداخلية لدينا.
هذا هو المكان الذي نتحقق فيه الأعداد الأولية السابقة.
في الواقع ، لن نقوم بتهيئته هنا سنقوم بتهيئته في الحلقة.
سنقوم بإنشاء مجموعتنا والذي سيكون عددًا صحيحًا من
الأعداد الأولية وسيكون حجمه 50.
ولن نقوم بالتهيئة إلى أي شيء عدا 0 في الوقت الحالي.
وبعد ذلك سنقوم بإنشاء ملف الفهرس الأولي ، وهذا
سيساعدنا في تخطي جميع الأعداد الزوجية ، و سنقوم فقط بتعيين ذلك على 2.
هذا المتغير في الواقع يذهب للتأكد من أننا
نبدأ من الفهرس الصحيح لأننا ذاهبون لترميز أول رقمين.
هذا ما سنفعله أولاً.
نحن في طريقنا إلى التعليمات البرمجية الصعبة أول 2 من الأعداد الأولية.
هذه هي الطريقة التي يمكننا بها الوصول إلى المصفوفة.
نحن نعرف كيفية إنشاء مصفوفة في السطر 10 ، ما عليك سوى تحديد نوع
البيانات متبوعًا بالاسم ثم في ملف أقواس مربعة نحدد الحجم.
ثم نقوم بالتهيئة كل شيء حتى 0 ، هذه سمة C99
يمكننا القيام بها.
ولتعيين البيانات إلى مصفوفة ، يمكنني فقط أن أقول اسم المصفوفة
ثم قيمة الفهرس.
تذكر أن المصفوفات تستند إلى 0.
لذلك سأقول أوليًا فرعيًا 0.
وأول شرط هو 2.
2 هو أول عدد أولي.
العدد الأولي الثاني هو سيساوي 3
بهذه الطريقة لدي بعض الأعداد الأولية الأرقام
التي يمكنني اختبارها سابقًا للعثور على أعداد أولية إضافية.
والآن تأتي الحلقات.
سنحتاج خارجي ل حلقة تمر عبر جميع الأرقام
من 5 حتى 100.
نعلم أن 4 ليس عددًا أوليًا لذلك أنا بدأت للتو في الخامسة.
إذن يمكننا القول أن 4 p يساوي 5 ، و p تساوي أقل من أو يساوي 100 ثم نتخطى الأرقام
الزوجية.
لذلك سنقول ص يساوي ص زائد 2.
لا نحتاج إلى البحث في أي أرقام ، ستكون الحلقة الخارجية.
ومرة أخرى ، يجب أن تكون كذلك اختبار كما أنت ذاهب.
الآن نحن أيضا في طريقنا لتعيين المتغير المنطقي الذي سيخبرنا ما
إذا كان وجدنا عددًا أوليًا.
هنا حيث يمكنني استخدام منطقي ، وسأقوم فقط بإنشاء
متغير محلي Boolean هو أولي.
سأقوم بتهيئة ذلك أن أقول أنه صحيح لأنني سأقوم بضبطه على "خطأ" فقط إذا فعلت
ذلك من خلال القائمة الكاملة للأعداد الأولية
التي تم إنشاؤها مسبقًا أو لقد وصلت إلى آخر عدد أولي وأتأكد من أنه ليس الجذر
التربيعي.
لذا فإن العدد الأولي سيكون يساوي true لكل
تكرار من 5 إلى 100 تخطي 2.
الآن ستذهب الحلقة الداخلية الخاصة بي من خلال جميع الأعداد الأولية التي
أنشأناها سابقًا.
اجعلنا لم نذهب أعظم من الجذر التربيعي لـ I.
لذلك سنستعرض جميع الأعداد حتى نصل إلى الجذر التربيعي ، يمكن أن تكون
هذه هي حالة x.
نحن أيضا بصدد الخروج إذا وجدنا عددًا أوليًا.
إذن سنقول ما إذا كان عددًا أوليًا هذا صحيح وقد تجاوزنا
حدنا ، والذي سيكون p مقسومًا على العدد الأولي الفرعي I أكبر من أو يساوي الأعداد
الأولية الفرعية I.
ثم نذهب إلى موجب زائد أنا متغير التحكم في الحلقة.
هذا هو حقا مفتاح الخوارزمية.
لذلك سنحاول أوجد جميع الأعداد الأولية
من 5 إلى 100 مع تخطي الأرقام الزوجية.
ثم في الحلقة الداخلية ، نحن سنبدأ من 1 ،
سنمضي قدمًا حتى نبدأ من أولي إلى صحيح أو أننا وصلنا إلى حالة الخروج ، وهي العدد p مقسومًا
على العدد الأولي الفرعي I أكبر من العدد الأولي الفرعي I ، وهذا تنتهي
بشكل أساسي لتصبح لدينا عندما نجد جذرًا تربيعيًا لأن هذا شرط
آخر للخوارزمية.
إذا كانت هذه هي الحلقة الخاصة بنا ، في الداخل من الحلقة الخاصة بنا ، سوف
نتحقق بالفعل من الأعداد الأولية.
الطريقة التي يكون بها الرقم أوليًا هل تقسمها على الرقم.
وإذا لم يكن لديك ملف 0 ، فأنت على ما يرام.
لذلك يمكنك فقط عمل تعديل p أولي sub-I يساوي 0.
وإذا كان هذا صحيحًا ، فلن
يكون لديك عدد أولي.
حتى تتمكن من ضبط قيمة منطقية تساوي خطأ.
وبعد ذلك هذا ما نفعله للحلقة بأكملها لأن كل ما نفعله
هو أننا ذاهبون لتعيين قيمة منطقية على خطأ.
وهذا سيخبرنا أننا لم نفعل ذلك أوجد عددًا أوليًا ، لذلك لا نريد
إضافة p إلى المصفوفة الأولية.
حسنًا ، آخر شيء نفعله هو أننا فقط تحقق مما إذا كان Boolean مضبوطًا على true ، وإذا
تم ضبطه على true ، فنحن نريد ملء المصفوفة الخاصة بنا.
نريد إضافته إلى المصفوفة. لذلك كانت إضافة إلى المصفوفات نجد عددًا أوليًا.
لذلك نقول فقط الأعداد الأولية و ثم نقول مؤشر أولي.
لأنه ، تذكر ، هذا هو الشخص هذا يمثله حقًا الفهرس الذي
نريد أن نضعه فيه المصفوفة التي نريد أن نبدأ من العنصر 3 وهو
الفهرس 2.
لذلك نريد التأكد من أننا نضعه فيه المكان الصحيح في المصفوفة
، وقمنا بتعيينه على p لأن p هو العدد الأولي الذي وجدنا لأن هذه هي حلقة for الخارجية.
نحن نحاول التحقق مما إذا كان هذا عدد أولي.
نبدأ من 5.
نقول إذا كان الرقم 5 سيكون عددًا أوليًا ، إذا يمكننا الانتقال إلى هذه الأرقام بدءًا من 1 ثم مقارنتها
بأي منها الأعداد الأولية السابقة وإذا لم تكن قابلة للقسمة على 0 ،
فنحن جيدون و علينا أن نفعل ذلك من أجل كل شيء.
ثم آخر شيء نحن نريد أن نفعل ذلك هو أننا نريد فقط
زيادة هذا المؤشر الأولي.
إذن في المرة القادمة نجد عددًا أوليًا رقم ، نحن في الفهرس الصحيح.
وهذا هو عليه.
وهذا هو الكل خوارزمية للعثور على الأعداد الأولية.
لذلك تريد حفظ ذلك والبناء تأكد من أن كل شيء على ما يرام.
نحن بخير.
لذلك أحب إضافة الخطأ الحقيقي القيم بتضمين منطقي
قياسي ، لا تنسَ ذلك.
ثم آخر شيء نحن علينا فقط أن نطبع الأعداد
الأولية.
لذلك يمكننا الحصول على حلقة for بسيطة.
وسنقوم بطباعتها كلها على نفس السطر ، لذلك لن
نضيف تغذية سطر.
إذن ما سنفعله هو سنقوم بإعادة إنشاء
متغير التحكم في الحلقة إلى 0 I.
سنذهب إلى طريقنا إلى الفهرس الأولي ، والذي سيكون حجم
كل شيء في المصفوفة وقم بطباعته في سطر واحد ، النسبة
المئوية I أو d والعدد الرئيسي الفرعي I.
ثم في النهاية ، سنقوم بإضافة خط تغذية.
شيء من هذا القبيل مع فاصلة منقوطة.
ولكن مرة أخرى ، الأشياء إشعار في هذا البرنامج.
أولا ، لاحظ المسافة البادئة ، يتم وضع مسافة بادئة لجميع الكتل.
نستخدم الأقواس أحيانًا عندما نقوم بذلك لديك أكثر من بيان داخل
الكتل الخاصة بنا ، وأحيانًا لا نفعل ذلك.
في هذا البيان إذا على الخط 25 ، لم نستخدم أي أقواس.
يجب أن تصبح الحلقات طبيعة ثانية إلى حد ما الآن.
حقا ما تريد أن تكسب منه هذه المهمة هي المصفوفات.
لذلك نقوم بإنشاء مصفوفة تسمى الأعداد الأولية ، ضبط حجمه 50 ، تهيئة كل شيء على 0.
ثم نضع الأول عنصرين إلى 2 و 3 ثم هذه الخوارزمية
بأكملها من 19 إلى تحدد الأسطر 32 ما إذا كان عددًا أوليًا بالنظر إلى
المصفوفة في الأعداد الأولية السابقة.
وكذلك القفز عندما تكون كذلك أكبر من الجذر التربيعي.
ومرة أخرى ترى الكثير من أقواس مربعة هنا للوصول إلى المصفوفات
وتعيين القيم إلى المصفوفات وكل شيء ، الأمر
بسيط جدًا.
لذلك دعونا نبني هذا ونرى ما سيحدث.
ليس لدينا تحذيرات ولا أخطاء.
إذا قمنا بتشغيل هذا ، ما تراه هو الخرج هو كل الأعداد
الأولية حتى 100 2 3 5 7 11 13 17 19 23 29 31 37 41 43 وهكذا.
هذه كلها أعداد أولية.
والعدد الأولي هو ذلك كان فقط عاملا في حد ذاته.
لا يمكنك تقسيم ذلك على أي شخص آخر عدد وليس لها باق.
لذلك 97 فقط 2 العوامل الخوض في ذلك هما 1 و 97.
لذا مرة أخرى برنامج سريع صغير لطيف.
سأقدم الحل.
يمكنك تحليلها.
ولكن مرة أخرى الوجبات الرئيسية ، كل شيء حول المصفوفات وأيضًا البيانات المنطقية
القياسية التي استخدمتها ، ذلك سمح لنا بإنشاء أنواع بيانات
منطقية بدون علامة الشرطة السفلية b ويسمح لك أيضًا باستخدام
قيم خاطئة صحيحة بدلاً من 1 و 0.
أتمنى أن يساعدك هذا. شكرًا لك.