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

حل السؤال 12 في مسابقة الفريق العربي للبرمجة

بدأه مصطفى 36a2 في 30 نوفمبر 2013 · 1 رد · 1,022 مشاهدة · في مشاريع ومسابقات القسم
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أرجو من الأخوة المشرفين نقل الكود إلى قسم المسابقات .. فلا يمكنني الدخول إليه لأسباب أمنيّة :p

//الحمد لله :)//هذا من فضل ربي#include<iostream>#include<cmath>bool *primes=new bool[1000000];//sieve of eratothenesesunsigned powersOfTen[]={1,10,100,1000,10000,100000,1000000};bool isRP(unsigned i){    unsigned a;//num of digits;    unsigned I;    for(a=0,I=i;I;I/=10,a++);//نقوم بحفظ عدد المنازل في المتحول اي    for(int j=0;j<a;j++)        if(!primes[(i=(i/10)+powersOfTen[a-1]*(i%10))])//نقوم باختبار العدد إن كان أولي وذلك بالتحقق من قيمته في المصفوفة            return false;    //ملاحظة بداخل أقواس المصفوفة يقوم بأخذ الآحاد ووضعها فيآخر خانة في العدد    return true;}int main(){    //أولا نقوم بعمل مصفوفة تمثّل جميع الأرقام ونعتبر مبدئياً أنها أولية    for(int i=0;i<1000000;i++)primes=true;    primes[0]=primes[1]=false;//الصفر والواحد ليسا أوليين    for(int i=2;i<1000000;i++)//بدءاً من الرقم اثنان        if(primes)//إن كان أولياً            for(int j=2;j*i<1000000;j++)                primes[j*i]=false;//نقوم بحذف مل مضاعفات هذا العدد    //الطريقة السابقة تسمّى غربلة الأعداد عن طريق حذف مضاعفات أي عدد    unsigned x=0;    for(int i=2;i<1000000;i++)        if(isRP(i))//إذا كان العدد المحدد أولي دائري        {            x++;//نقوم بزيادة العداد            std::cout<<i<<std::endl;        }    std::cout<<x<<std::endl;    return 0;}
#2

ها هو الموقع الخاص بالمسابقات ... ادخل للمسألة 12

http://arabteam2000.goo2pro.com/

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…