تم النشر منذ 27 Sep 2013 (معدل) السلام عليكم كان السؤال الأول أكتب دالة تأخذ وسيط مصفوفة مكونة من 400 عنصر من 2 إلى 401 وتعيد مجموع القواسم المشترك الأكبر للأرقام الزوجية مثنى مثنىمثال :2,4 = 22,6 = 24,6 = 24,8 = 4...2+2+2+4+ ... = الناتج النهائيوالجواب هو 119748 ولقد وفق المشاركون التالون في حله نرجو من الاخوة الفائزين وضع اكوادهم ولا باس بشيء من الشرح حتى نستفيد تم تعديل 27 Sep 2013 بواسطه أحمد أبو عبد البر 1 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 27 Sep 2013 (معدل) الحمد لله .. بارك الله فيك أخ أحمد ..هذا هو الكود وهو بلغة Java//الكود بلغة جافا ... والجواب i, 119748public class third { public static int thirdQuestion(int[]array) { int sum=0; for(int i=0;i<array.length;i++) { if(array[i]%2==0) { for(int j=i+1;j<array.length;j++) { if(array[j]%2==0) { sum+=gcd(array[i],array[j]); //System.out.println(array[i]+","+array[j]+"-->"+gcd(array[i],array[j])); } } } } return sum; } private static int gcd(int i, int j) { int k; if(i==j) return i; else if(j==0) return i; if(i<j) { k=j;j=i;i=k; } return gcd(j,i%j); } public static void main(String[]args) { int[]array=new int[400]; //answer throw 2 --> 401 is 119748 for(int i=0;i<array.length;i++) { array[i]=2+i; } System.out.println(thirdQuestion(array)); }} الفكرة هي بإيجاد القاسم المشترك الأكبر بين كل عددين زوجيين (وهذا بداخل حلقتين for )تقوم الدالة الرئيسية main بـــإنشاء المصفوفة المطلوبة .. (الأعداد من 1 إلى 401 )أما الدالة التي تجيب عن السؤال ففيها حلقتان ندخل إلى الثانية عندما نصادف عدد زوجي في الأولى .. ونبدأ من الرقم التالي(حتى لا نأخذ gcd العدد مع ذاته )وعندما نصادف عدد زوجي في الحلقة الثانية نحسب القاسم المشترك الأكبر للعددين ونضيف الناتج للمجموع الكليوالحمد لله رب العالمين تم تعديل 27 Sep 2013 بواسطه مصطفى 36a2 2 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 27 Sep 2013 السلام عليكمهذه محاولتي# result 119748def big_div(first,second): result = [] if first < second: a = first else: a = second for i in range(2, a + 1): if first % i == 0 and second % i == 0: result = i return resultdef get_sum(entry): result = 0 a = 2 c = 4 while a < entry: while c <= entry: result += big_div(a, c) c += 2 a += 2 c = a + 2 return resultprint(get_sum(400)) 1 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 27 Sep 2013 السلام عليكم ورحمة الله وبركاتههذا الكود مكتوب بلغة فيجوال بيسك 6Private Sub cmd_find_Click()For i = 2 To 401 Step 2 For j = 2 To 401 Step 2 If i <> j And i > j Then u = u + Gcd(i, j) End If Next jNext ilbl.Caption = uEnd SubPrivate Function Gcd(ByVal x As Integer, ByVal y As Integer) As Integer Dim tmp As Long Do If x < y Then tmp = x x = y y = tmp End If x = x Mod y Loop While x Gcd = y End Function 1 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 28 Sep 2013 (معدل) السلام عليكم و رحمة الله محاولتي:#include <iostream>using namespace std;///////////////////////////////////////////int gcd(int a,int b);int calc(int array[],size_t size);void init(int array[],size_t size);////////////////////////////////////////////int main(){const size_t size = 400;int array[size];init(array,size);cout << calc(array,size) << endl;return 0;}//////////////////////////////////////////void init(int array[],size_t size){for(int i=0;i<size;i++) array[i]=i+2;}///////////////////////////////////int gcd(int a,int b){if(a==b) return a;if(a>b) return gcd(b,a-b);if(b>a) return gcd(a,b-a);}////////////////////////////////////int calc(int array[],size_t size){int s=0;for(int i=0;i<size;i++) { for(j=i+1 ; j<size ;j++) s += gcd( array[i] , array[j] ); }return s;} تم تعديل 28 Sep 2013 بواسطه abdou001 1 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 29 Sep 2013 #include <stdio.h> #include <stdlib.h> int gcd_sum(int numbers[400]) { int i, j, gcd, sum = 0; for(i = 0; i < 399; i += 2) { for(j = i + 2; j < 399; j += 2) { gcd = (numbers < numbers[j])? numbers : numbers[j]; while((numbers%gcd) || (numbers[j]%gcd)) gcd -= 2; sum += gcd; } } return sum; } void main() { int i, numbers[400]; for(i = 0; i<400; i++) numbers = i + 2; printf("%d\n", gcd_sum(numbers)); system("pause"); } 1 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 30 Sep 2013 هذا هو الكود بلغة C++#include<iostream.h>int one(int x, int y){ if (y > x) one(y,x); else if (y == 0) return x; else if (y > 0) one( y, (x % y) );}long int mosap(int k[]){int y[200],h=0;for(int l=0;l<400;l+=2){y[h]=k[l];h++;}long int o=0;int temp1,temp2;for(int i=0;i<200;i++){ for(int j=i+1;j<200;j++){ temp1=y[i]; temp2=y[j]; o+= one(temp1,temp2); }}cout<<endl;return o;}void main(){int array[400];for (int t=0;t<400;t++){array[t]=t+2;}cout<<mosap(array);} 1 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
تم النشر منذ (معدل)
السلام عليكم
كان السؤال الأول
أكتب دالة تأخذ وسيط مصفوفة مكونة من 400 عنصر من 2 إلى 401 وتعيد مجموع القواسم المشترك الأكبر للأرقام الزوجية مثنى مثنى
مثال :
والجواب هو 119748
ولقد وفق المشاركون التالون في حله
نرجو من الاخوة الفائزين وضع اكوادهم ولا باس بشيء من الشرح حتى نستفيد
تم تعديل بواسطه أحمد أبو عبد البرشارك هذا الرد
رابط المشاركة
شارك الرد من خلال المواقع ادناه