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

نقاش حول الأعداد الأولية

مغلقرائج
بدأه Asm4all في 6 أكتوبر 2005 · 41 رد · 22,003 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#26

الرسم والحركات دي بيسموها المعنى الهندسي , أكيد شوفت المصطلح ده في كتب قبل كده

انت مش فاكر ان قوانين دي مورغان تم اثباتها بواسطة اشكال فن-ايلر التفسير الهندسي مقبول دائما

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#27

همممم.. صنعت برنامج في المتوسط يقوم بالكشف عن الأرقام الأولية،، تعطيه مجال عددي وليكن من 100000000 إلى 20000000 ويقوم بالكشف عن الأرقام الأولية بين هذين الرقمين،، طبعا البرنامج مصمم بلغة QBasic،، في هذا الوقت لم أكن أعرف بالأمر MOD الذي يعطيني ناتج القسمة،، يعني تخيل كيف صنعت البرنامج!! أذكر أنه كان يجرب القسمة من 1 إلى جذر الرقم وينظر هل الناتج عدد صحيح أم لا! طبعا العملية طويلة وخاصة إذا كان الرقم مثل 10000000001 لأنه سيحاول التأكد من مجموعة كبيرة من الأرقام!

طبعا لا تسألني عن شفرة البرنامج الآن ولا سيما أني فقدتها مع القرص الصلب الذهبي:

/index.ph...topic=80773&hl=

ملاحظات على الطرق السابقة:

1- طريقة هاني سريعة جدا لكنها تستهلك الذاكرة بحجم كبير ولا سيما أنها تخزن كافة الأرقام سواء كانت أولية أو غير أولية!

2- طريقة (الأسمبلي للجميع) ممتازة لكنها بطيئة بعض الشيء ولا سيما أنها تحاول إيجاد القاسم بالبحث من أول رقم إلى الجذر التربيعي للعدد س!

---- لكن سأحاول وضع طريقتي وهي مماثلة لما سبق ومطورة قليلا:

كيف نعرف أن الرقم س عدد أولي أو لا؟ نقوم بتجربة قسمة العدد س على مجموعة الأعداد (الأولية) الأصغر من جذر س.

1- عند بناء مصفوفة الأعداد الأولية ولنسميها (المجموعة الأولية) ،، نقوم بإضافة الرقم 2 في الموجموعة الأولية أولا.. وبعدها نسأل هل العدد 3 يقبل القسمة على أحد الأرقام في المجموعة الأولية؟ إذا كان نعم فننتقل إلى الرقم التالي، وإذا كان لا، فنضيف الرقم إلى المجموعة الأولية وننتقل إلى الرقم التالي وهو 4، ونسأل نفس السؤال! ستلاحظ عندما نصل إلى الرقم 29 مثلا،، فإننا نسأل عن قابلية قسمة هذا العدد على أحد هذه الأرقام { 2، 3، 5، 7، 11، 13، 17، 19، 23} فقط وليست كل الأرقام التي أصغر من 29.. (طبعا نستطيع أن نجعله يسأل في الأرقام الأصغر من الجذر)

2- عند التشغيل، أو عند السؤال عن إن كان الرقم س هو أولي أو لا،، فإننا نجرب قسمة العدد س على أحد الأعداد الأولية {الأكبر من 1 وأصغر من جذر العدد س}

أعتقد بهذا الأسلوب سوف تحصل على سرعة عالية وفي نفس الوقت ستحصل على توفير في الذاكرة بشكل ملحوظ!

إليكم الشفرة البسيطة!،، هذه فقط تريكم الفكرة،، ربما في المستقبل أضيف شفرة كاملة توضح كلامي السابق بشكل ممتاز،، هذه تعمل بشكل ممتاز، لكنها تعيد البناء في كل طلب،، طبعا نستطيع استخدام نفس البناء!

import java.util.*;
class PrimeMachine{
	public static void main(String[]args){
  List<Integer>p=getPrimes(100);
  print(p);
  System.out.println ("Prime at Position 10 is "+p.get(10));
  System.out.println ("Position of Prime 13 is "+p.indexOf(13));
	}
	public static void print(List<? extends Number>numbers){
  for(Number n:numbers){
 	 System.out.println (n);
  }
	}
	public static boolean isPrime(int x){
  int root=(int)Math.sqrt(x);
  List<Integer>p=getPrimes(root+1);
//  System.out.println ("List: "+p+"\nRoot: "+root);
  return !isDivider(x, p);
	}
	public static List<Integer> getPrimes(int end){
  List<Integer>currentPrimes=new Vector<Integer>();
  currentPrimes.add(2);
  for (int i = 2; i<end; i++) {
 	 if(!isDivider(i, currentPrimes)){
    currentPrimes.add(i);
 	 }
     }
     return currentPrimes;
	}
	public static boolean isDivider(int x, List<Integer>list){
  for(int p:list){
 	 if(x%p==0)return true;
  }
  return false;
	}

}

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

#28
اقتباس
هيثم، بصراحة أنا مافهمت بنوب كيف حصلت على هذه ال1000 عدد المتتالية ..  ولكن أعتقد فيها مشكلة ..

1001! + 2 = 1001 * 1000 * 999 * 998 * ..... * 3 * 2 * 1 + 2

أخرج الحد 2 خارج قوس:

= 2 * (1001 * 1000 * 999 * 998 * .... * 3 * 1 + 1)

وبالتالي العدد 1001! + 2 يقبل القسمة على 2؟ كيف تقول أنه أولي؟

ونفس الشي + 3 ، يقبل القسمة على 3 و هكذا ...

إذا كان تحليلي خطأ فسامحني لأني هلأ فايق وراح علي السحور

بالنسبة لهاني , انا لم أقل أعداد أولية وإنما قلت أعداد غير أولية ,, إنتبه :)

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#29
romanof كتب:
اضافة الى كل ذلك هناك طريقة سهلة جدا للحصول على عدد اولي عملاق خذ الاعداد الاولية المعروفة واضربها ببعضها واضف واحد الى الناتج ستحصل كل مرة على عدد اولي جديد

هذه نتيجة من النتائج المترتبة على الأعداد الأولية..

لكنها ليست دائماً صحيحة..

يعني نستطيع أن نقول أن هناك احتمال كبير لأن ينتج عندنا عدد أولي عند ضرب الأعداد الأولية ببعضها وإضافة 1

لكن هذا ليس دائماً..

أعجبتني طريقة الأخ أبو مازن فهي توفر السرعة وتقلل مساحة الذاكرة المستخدمة..

لكن على فرض أريد عدد أولي من 15 منزلة (مرتبة)

هل يمكن الحصول عليه بوقت قياسي؟

طبعاً أنا لا أسأل هذا السؤال من فراغ..

هناك العديد من النظريات والتخمينات التي تتعلق بالأعداد الأولية.. لم تثبت بشكل كامل حتى الآن

لأننا ببساطة لا نعرف سلوك الأعداد عندما تصبح كبيرة جداً

لذلك إذا تمكنا من فحص الأعداد العملاقة فيما إذا كانت أولية أم لا..

هذا يساعدنا كثيراً في حل المشكلات التي تنتظر إثبات رياضي،

:)

اللهم طهر أرض فلسطين من العملاء والخونة

#30

ما رأيكم في هذا المحرك؟؟

على فرض أننا نريد محرك في هذه الصورة:

interface PrimeGenerator{
	/*This should return to us the list of prime numbers
  *at least up to the (limit)
  */
	public List<Integer>getPrimeList(int limit);
	public boolean isPrime(int number);
	/*This should return the list of prime dividers for a given number.
  *for example, the dividers for 180 is (2*2*3*3*5)
  */
	public List<Integer> getDividers(int number);
	public int getIndexOf(int prime);
	public int getPrimeAtIndex(int index);
}

هذا المحرك سيعطي لنا ما يريد السؤال وزيادة إلى بعض العمليات المتوقعة من محرك كهذا..

سيعطي لنا هذا المحرك:

1- الأعداد الأولية إلى حد معين.

2- هل العدد س أولي؟؟

3- تحليل عدد معين إلى عوامله الأولية،، مثلا:: 24= 2*2*2*3

4- موقع عدد أولي معين.

5- عدد أولي بموقع معين.

------------

نفذت هذا المحرك بهذه المواصفات في الملف المرفق. هذه ميزات المحرك الذي صنعته:

1- حجم مصفوفة الأعداد الأولية تزيد حسب الحاجة!

2- عند بناء المصفوفة،، لا يكترث بالأرقام الزوجية مثلا!

3- يزيد حجم المصفوفة إذا طلب المستخدم موقعا أكبر من حجم السلسلة.

4- يزيد حجم المصفوفة إذا طلب المستخدم سلسلة بحد بمعين.

5- عند السؤال عن حالة س هل هو أولي أم لا، فإن المصفوفة تزيد إلى جذر س!

6- الشفرة مصنوعة بالطريقة الشيئية التوجه! استعمال سهل وسريع!

7- توفير في الذاكرة، المصفوفة تزداد حسب الحاجة!

8- عند الاختبار، يتم قسمة العدد على الأعداد الأولية فقط دون الأخرى! (مزيد من السرعة)

هذا امتحان بسيط:

	public static void main(String[]args){
  PrimeGenerator m=new HussamPrimeMachine(10);
  System.out.println ("Prime at index: "+m.getPrimeAtIndex(400));
  System.out.println ("dividers: "+m.getDividers(170));
  System.out.println ("is prime: "+m.isPrime(157));
  System.out.println ("prime list: "+m.getPrimeList(1000));
	}

ربما تستطيع أن تصنع محركا أسرع وأفضل من محركي،، يمكنك أن تستخدم الواجهة PrimeGenerator في فئتك الجديدة وبذلك نستطيع الاختبار بين المحركين!

HussamPrimeMachine.java.txt

#31

أن المسألة التي تتناقشون بها كبيرة للغاية و شديد التعقيد و السرية لان لها علاقة وثيقة بفك تشفير أي شيئ , و من المعروف ان أسرع خوارزمية تحليل الاعداد و معرفة فيما إذا كانت اولية أم لا هي خوارزمية القطع الناقصي" و برهانها يتعدى الـ 50 صفحة و تعتمد على أحدث ما توصلت اليه رياضيات الأعداد , و هناك مسابقات دولية لإيجاد أكبر الأعداد الاولية و التي تكون عادة ما يسمى أعداد ميرسيني أو فيرما و تكون من الشكل 2^2^n-1 , و اكبر عدد اولي تم إكتشافه يتالف من نصف مليون رقم إستغرقت عدة كمبيوترات عدة سنوات للبرهان على اوليته , كما أنه من الجهل السؤال عن اكبر الأعداد الأولية لإن إقليديس و منذ عدة الاف من السنسن قد برهن ان عددها غير منتهي !

newslatterlogo.jpg
#32

هناك طريقة سهلة ولكنها غير عملية لانتاج الاعداد الاولية

اقتباس
كما أنه من الجهل السؤال عن اكبر الأعداد الأولية

الشباب يسالون عن عن اكبرالاعداد الاولية المعروفة بارك الله يا اخي وليس اكبرها على الاطلاق

عموما دوال القطوع الناقصية (على قولك ) على علاقة وثيقة بنظرية الاعداد

اسهل طريقة للحصول على سلسلة من الاعداد الاولية هي ان تضرب اول n من الاعداد اولية وتضيف للناتج واحد فسيعطيك الناتج عدد اوليا دائما

مثال

mimetex.cgi?%202*3%20+1=7

mimetex.cgi?2*3*7+1=43

mimetex.cgi?2*3*7*43+1=1807

كان من الافضل ان تختار كلمة بدلا من كلمة من الجهل

بعدين بالمناسبة يا اخي انما تتحدث عنه هو اثبات نظرية فيرما المشهورة

mimetex.cgi?%20%7B%20%7Bx%7D%5En+%7By%7D

mimetex.cgi?%20%7B%20xyz%20%5Cneq%200%20

mimetex.cgi?%20n%20%5Cin%20%5Cmathbf%7BN

تم تعديل هذه المشاركة بواسطة HGB في 27 يوليو 2007 في 01:43

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#33

السلام عليكم

سأقوم بتصحيح معلومة بسيطة :

اقتباس
اكبر عدد اولي تم إكتشافه يتالف من نصف مليون رقم

أكبر عدد أولي معروف هو

mimetex.cgi?2%5E%7B30402457%7D-1

و هو العدد الأولي الثالث و الأربعون من أعداد Mersenne الأولية، و يتكون من 9152052 رقم (أكثر من تسعة ملايين رقم و ليس نصف مليون)

و تم إيجاده في 25 من شهر ديسمبر 2005 بجهود Great internet Mersenne prime search (GiMps)

و قبل ذلك التاريخ كان أكبر عدد أولي معروف هو

mimetex.cgi?2%5E%7B25964951%7D-1

MPSI/MP* - CPR Tanger

#34

السلام عليكم

اقتباس
أعداد ميرسيني أو فيرما و تكون من الشكل 2^2^n-1

أعداد Mersenne هي الأعداد التي تكتب على الشكل

mimetex.cgi?M_n=2%5E%7Bn%7D-1
حيث n عدد صحيح طبيعي.

أعداد Fermat هي الأعداد التي تكتب على شكل

mimetex.cgi?F_n=2%5E%7B2%5En%7D+1
حيث n عدد صحيح طبيعي.

MPSI/MP* - CPR Tanger

#35

أولا أريد أن أعتذر إذا كنت لم أفهم تماما ما كان يقصده الاخوة , و ذلك لأنني قرات المشاركات بسرعة .

ولكن أخي romanof أنا لم أقصد دوال القطوع الناقصية بل إن إسم الخوارزمية خوارزمية القطع الناقص و ليس لها أي علاقة بدوال القطع الناقص , كما أن نظرية فيرما (الأخيرة كما تسمى) تفترض أن n>2 و إلا لتحولت المسالة الى ثلاثيات فيثاغورس , و قد تم البرهان عليها من 3 أو 4 سنوات فقط , كما أن طريقة توليد الأعداد الأولية التي ذكرتها ليست قاعدة , و قد قرأت مرة أن هناك فعلا خوارزمية شديدة التعقيد لتوليد الأعداد الأولية - لكنني لم اشاهدها - و مشكلتها أنه تحتاج حسابات كثيرة جداً الى حد أنه أختيار عدد عشوائي و غختبار اوليته أسهل .....

اما بالنسبة لأكبر الأعداد الأولية فقد تكون معلوماتي قديمة (حيث قرأت مقالة حولها على أيام Pentuim II) ... لا أظن أنني أخطأت في صيغة اعداد فيرما مع أنه كان علي إستخدام LaTex

newslatterlogo.jpg
#36
اقتباس
ا أن طريقة توليد الأعداد الأولية التي ذكرتها ليست قاعدة ,

هذا الطريقة قاعدة ومثبته يا خي كمان ولكني لم اسهب في ذكر التفاصيل

اما عن كون ال n اكبر من 2 ايضا معروف يا اخي مثال مشهور (3-4-5) و المضاعفات الصحيحة الموجبة لهذه الثلاثية

اقتباس
قد تم البرهان عليها من 3 أو 4 سنوات فقط

تم برهانها منذ عشر سنوات في عام 1995

اقتباس
لا أظن أنني أخطأت في صيغة اعداد فيرما مع أنه كان علي إستخدام LaTex

لابد من استخدام الlatex

تم تعديل هذه المشاركة بواسطة romanof في 13 أبريل 2006 في 01:25

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#37

هذا كود بسيط للتعرف على الأعداد الأولية

#include <iostream>
using namespace std;

int main()
{
		int a;
		int I;
   cout<<”enter the number a”<<endl;
   cin>>a
   for(i=a-1;i>1;i--) {
if(a%i=0){cout<<”a is a primer number”<<endl;}
else {cout<<”a isn’t a primer number”<<endl;}
}
return 0;
}
#38

السلام عليكم ......

ياشباب عندي رقم مكون مثلا من 140 خانة هذا الرقم يتكون من حاصل ضرب رقيمن فقط

السؤال ما هم هذان الرقمان؟

مثال

35=5*7 فقط

#39

that s a new thread plz my brother

#40

لا أدري إن كان وصولي متأخرا لكن

هناك نظرية رياضية تسمى نظرية ويلسون

تكفيك عناء القسمة المتتالية للعدد المطلوب على الأعداد التي تصغره

نص النظرية هو

p عدد أولي إذا و فقط إذا كان

(p-1)!

+1

يقبل القسمة على p

http://villemin.gerard.free.fr/Wwwgvmm/Decompos/DivisiWi.htm

#41

أخي للاسف نظرية ويلسون غير عملية من وجهة النظر الخوارزيمة لانه تخيل ما يبنتج لديك إذا حسبت العاملة لعدد مؤلف من 140 رقم !!!!

newslatterlogo.jpg
#42

السلام عليكم ورحمة الله وبركاته :

يا عيني على أفكار هذا المنتدى .. صدقاً أنه رائع ولم أتوقع أن فيه كل هذه الأفكار .. :)

شكراً جزيلاً لأصحاب الفكرة ( فكرة إنشاء هذا المنتدى ) ..

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

هذا الموضوع مغلق.

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