السلام عليكم
أحتاج إلئ مساعدة في طريقة إيجاد القاسم المشترك الأصغر للسلسلة من الأرقام INTEGER غير الرقم 1.
في الغالب سأحتاج لعمل Recursion
شكرا.
السلام عليكم
أحتاج إلئ مساعدة في طريقة إيجاد القاسم المشترك الأصغر للسلسلة من الأرقام INTEGER غير الرقم 1.
في الغالب سأحتاج لعمل Recursion
شكرا.
أولا أظن أن مكان هذا الموضوع هو قسم الرياضيات والخوارزميات
هناك عدة طرق
مثلا:
نقوم بعمل حلقة تكرارية على متغير i و نجرب هل يعتبر باقي قسمة العددين على i يساوي 0
في كل مرة لا يتحقق الشرط نضيف 1 لـ i و نعيد الكرة
شرط التوقف هو العثور على قاسم مشترك
يمكن أن نجعل مجال البحث هو من 2 إلى أصغر العددين
طريقه أخرى ،
LCM(x,y) = x*y / GCD(x,y)
قم باستخراج القاسم الأعظم للعدين واقسم حاصل ضرب العددين على الناتج من عمليه القسمه ،
تم تعديل هذه المشاركة بواسطة Wajdy Essam في 2 أغسطس 2008 في 01:28
http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة
https://moalfat.com للكتب الالكترونية والكورسات التعليمية
Everything we see now is just an engineering solution based on old science
Wajdy Essam كتب:طريقه أخرى ،LCM(x,y) = x*y / GCD(x,y)قم باستخراج القاسم الأعظم للعدين واقسم الناتج على حاصل ضرب العددين ...
النتيجة دائما أقل من 1
أليس كذلك
القاسم الأكبر حتما أصغر من أو يساوي أضغر العددين
و لما نقسم هذا العدد على عدد كبير عليه
النتيجة أصغر من 1
أم أن هناك شيئ لم أفهمه؟
كتبت المعادله صح ، لكني أخطأت في شرحها وقمت بتعديلها بعد ذلك ،لكن ما شاء الله عليك طلعت سريع في الكتابه :)
مثال :
lcm(36, 78) = 36 · 78/(36, 78) = 36 · 78/6 = 6 · 78 = 468
شكرا لك أخي djug ،
http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة
https://moalfat.com للكتب الالكترونية والكورسات التعليمية
Everything we see now is just an engineering solution based on old science
أسف يا إخوة يبدو أنني لم أشرح السوال جيدا. أنا لا أبحت علئ المضاعف المشترك الأصغر LCD بل القاسم المشترك الأصغر غير الرقم 1. مثلا إدا كانت الأرقام زوجية النتيجة هي 2. و إدا أخدنا 9,18,27,30 النتيجة ستكون 3.
أنا كتبت السوال في هدا القسم لأني أحتاج الجواب علْئ شكل Java method. ولكن Algorithm فقط يكفي.
شكرا و أسف علئ سوء التفاهم.
كتبت هده الدالة لإيجاد النتيجة بالنسبة لعددين.
static int gcd(int x, int y) {
int min = Math.min(x, y);
int max = Math.max(x, y);
int result = 1;
for ( int i = 2; i <= min; i++) {
if ( (min % i == 0) && max % i == 0) {
result = i;
break;
}
}
return result;
}هل من طريقة لإيجادها بالنسبة بسلسلة من3 أرقام أو أكثر.
قم بعمل دالة تنادي هذه الدالة
بشكل تكراري بعدد العناصر التي تريد إيجاد القاسم المشترك الأكبر لها
وفي كل مرة نادي الدالة باستخدام ناتج المرة التي تسبقها وعدد جديد من المصفوفة
مثال 4و6و8
temp=gcd(4,6) temp=(temp,8)
في النهاية ستجد الجواب في المتغير temp
تحياتي
omb10 كتب:أسف يا إخوة يبدو أنني لم أشرح السوال جيدا. أنا لا أبحت علئ المضاعف المشترك الأصغر LCD بل القاسم المشترك الأصغر غير الرقم 1. مثلا إدا كانت الأرقام زوجية النتيجة هي 2. و إدا أخدنا 9,18,27,30 النتيجة ستكون 3.أنا كتبت السوال في هدا القسم لأني أحتاج الجواب علْئ شكل Java method. ولكن Algorithm فقط يكفي.
شكرا و أسف علئ سوء التفاهم.
نعم هذا ما شرحته لك في المشاركة رقم 2
أخي علاء توجد طريقة "أجمل" من عمل دالة تنادي أخواتها عدة مرات (الوقت و الذاكرة اللازمين لذلك كبير نسبيا)
ملاحظة: لم أجرب هذا البرنامج بعد...مهمتك أنت تجريبه و تصحيح الأخطاء -إن وجدت-
هذا برنامجك وتم تجربته عدة مرات بنجاح ولكن بلغة الVB
ان كان أحد يفهم فى اللغتين يترجمه لك
ولو أردت أن أشرحه لك خطوة بخطوة فأنا مستعد
Private Sub Command1_Click()
N = InputBox("ENTER NUMBERS")
For I = 1 To N
X(I) = InputBox("ENTER NO", I)
Next I
For I = 1 To X(1)
DEV = X(1) / I
If Int(DEV) = DEV Then GoTo 10
GoTo 20
10 For J = 2 To N
SSS = X(J) / DEV
If Int(SSS) = SSS Then GoTo 100
GoTo 20
100 Next J
GoTo 30
20 Next I
30 Text1.Text = DEV
End Sub
بســم الله الـرحمــن الرحيــم
السلام عليكــم ورحمـة الله وبركاتــة ،،
الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين
شكراً لك اخي الكريم
djug كتب:نعم هذا ما شرحته لك في المشاركة رقم 2أخي علاء توجد طريقة "أجمل" من عمل دالة تنادي أخواتها عدة مرات (الوقت و الذاكرة اللازمين لذلك كبير نسبيا)
ملاحظة: لم أجرب هذا البرنامج بعد...مهمتك أنت تجريبه و تصحيح الأخطاء -إن وجدت-
شكرا أخي, طريقتك اشتغلت بعد تصحيح بعض الأخطاء الطفيفة.
جزاك الله خيرا.
وشكرا للجميع علئ المساعدة.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…