بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاتة
أولاً ما هو العدد الأولى: هو العدد الذى لا يقبل القسمة الصحيحة إلا على نفسة وعلى الواحد الصحيح فقط ."أى لايوجد باقى من حاصل القسمة"
أمثلة على الأعداد الأولية : 2, 3, 5, 7, 11, 13, 17, 19
يقدم فريق GIMPS جائزة تقدر ب 100.000$ لمن يستطيع إيجاد رقم أولى يعطى بالمعادلة الآتية : prime = (2^p)-1 بحيث يتكون الرقم الأولى p من ثمانية خانات عشرية أو أكثر
وأيضاً تقدم تلك الشركة برامج تستطيع تنزيلها مجاناً والعمل عليها لإنتاج الأرقام الأولية
وإليك رابط موقع الفريق GIMPS :
وشرح المعادلة السابقة هى أن العدد الأولى المطلوب هو العدد 2 مرفوعاً لأس عدد أولى مطروحاً منه واحد وناتج هذه المعادلة يعطى عدد أولى.
فأكبر عدد أولى توصلوا له هو :
(2^43112609-1)
وإليك أن تتخيل الرقم الأولى الذى سيخرج من المعادلة السابقة
ما جعلنى أكتب هذا الموضوع هو سؤال طرح فى هذا المنتدى وهو برنامج لطباعة الأعداد الأولية وهذا هو كود البرنامج :
أولاً : الكود بلغة ++c
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int no,counter,counter1,check;
cout<<"<-----------------------PRIME NO. SERIES------------------------>";
cout<<"\n\n\n\t\t\t INPUT THE VALUE OF N: ";
cin>>no;
cout<<"\n\n THE PRIME NO. SERIES B/W 1 TO: \n\n"<<no;
for(counter = 1; counter <= no; counter++)
{
check = 0;
//THIS LOOP WILL CHECK A NO TO BE PRIME NO. OR NOT.
for(counter1 = counter-1; counter1 > 1 ; counter1--)
if(counter%counter1 == 0){
check++; // INCREMENT CHECK IF NO. IS NOT A PRIME NO.
break;
}
if(check == 0)
cout<<" \t"<<counter;
} getch();
return 0;
}ثانياً : الكود بلغة C
#include <stdio.h>
void main()
{
int no,counter,counter1,check;
printf("<-----------------------PRIME NO. SERIES------------------------>");
printf("\n\n\n\t\t\tINPUT THE VALUE OF N: ");
scanf("%d",&no);
printf("\n\nTHE PRIME NO. SERIES B/W 1 TO %d : \n\n",no);
for(counter = 1; counter <= no; counter++)
{
check = 0;
//THIS LOOP WILL CHECK A NO TO BE PRIME NO. OR NOT.
for(counter1 = counter-1; counter1 > 1 ; counter1--)
if(counter%counter1 == 0)
{
check++; // INCREMENT CHECK IF NO. IS NOT A PRIME NO.
break;
}
if(check == 0)
printf("%d\t",counter);
}
}فإن إستخدمت هذا البرنامج فى موضوعنا السابق " ليس لإيجاد الرقم المطلوب" ولكن لإيجاد الرقم الذى سوف تضعة أس للرقم 2 أى لإيجاد ال p
فقط ضع للبرنامج قيمة مكونة من ثمانية أرقام أو أكبر أو تضع له قيمة ال p الموجودة فى أكبر رقم توصلوا له
فيلزمك هذا ترك جهازك يعمل قرابة السنة إذا كنت تمتلك جهاز يحتوى على معالج جيد.
لا تستعجل فقط أترك الجهاز فترة بعدها ستستطيع مشاهدة الأرقام الأولية على الشاشة ببطئ.
هذا فقط لإجاد ال p الذى ستضعه فى المعادلة لإيجاد الرقم الأولى المطلوب
فلهذا يجب علينا عند كتابة البرامج مراعاه عامل أساسياً من أهم عوامل نجاح أى برنامج ألا وهو عامل سرعة معالجة البيانات فى البرنامج
أترك لكم مجال التفكير فى كيفية تقليص زمن عمل البرنامج السابق
البرنامج السابق لإيجاد ال p من يريد ال 100.000$ يحاول عمل برنامج لفعل هذا :happy:
