اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

يمكن كتابة أكثر من كود يحقق المطلوب والفرق بينها يكون من ناحية درجة التعقيد (التعقيد الزماني تحديداً).
سوف اكتب لك حل جيد لذلك بدرجة تعقيد أعتقد أنها الأفضل (n)sqrt، لكن يفترض ان يكون لديك معرفة أساسيات "نظرية الأعداد":
في البداية نتأكد أن العدد ليس 0 أو 1 ويرجع بذلك false أي أنهما ليسا أوليان.
بعد ذلك نأخذ حلقة من 2 إلى جذر العدد ونبدأ بالتحقق من الأرقام إذا كان أحدها هو قاسم للعدد فإذا كان أحدها يقسم العدد بالتالي العدد غير أولي وبتالي يكون false وغير ذلك عند عدم وجود أي قاسم يرجع true فيكون هذا العدد أولي.

#include<iostream>
using namespace std;
bool prime(int g) {
  if(g<2) 
         return 0;
  for(int  i=2; i*i<=g; ++i)
       if(g%i==0)return 0;
  return 1;
}
    int main(){        
        int a;
        cin>>a;
        if(prime(a))
                 cout<<"prime";
        else
             cout<<"not prime";                 
        return 0;
    }

 

  • 0
نشر

نحن لا نحل الأسئلة الامتحانية.

عليك البدء بالحل و كتابة الكود و إن كان هنالك جزء لم تفهمه يمكن أن نساعدك في توضيح الحل.

الخطوات:

  1. كيف نعرف إن كان العدد أولي أما لا؟
  2. كيف نقوم بتعريف تابع؟
  3. كيف نعيد قيمة من تابع؟

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...