PDA

View Full Version : الگوریتم بازگشتی بزرگترین مقسوم علیه دو عدد



HOSSEINGHOLI
شنبه 30 مهر 1384, 08:58 صبح
کی میتونه بزرگتزین مقسوم علیه دو عدد رو به صورت بازگشتی محاسبه کنه؟

Developer Programmer
شنبه 30 مهر 1384, 10:31 صبح
من به زبان پاسکال واسه N عدد نوشتم ... باشد که رستگار شوید!
متغیرها رو تعریف نکردم خودت چک کن


FUNCTION bmm(a,b:integer):integer;
var
r,n,m:integer
begin
a:=abs(a);
b:=abs(b);
m:=a;
n:=b;
if n>m then
begin
m:=b;
n:=a;
end;
r:=m mod n;
if r=0 then bmm:=n
else
bmm:=bmm(n,r);
end;
---
var
!!
begin
m1:=a[1];
for i:=2 to n do
m1:=bmm(m1,a[i]);
writeln(m1);

end;

gm.sara
دوشنبه 02 آبان 1384, 12:45 عصر
فکر کنم دوست عزیزمان خیلی الگوریتم را پیچیده کردن من با زبان c می نویسم . کار اصلی که انجام می دهد روش نردبانی است که از این طریق ب.م.م بدست می آید :

#include<stdio.h>
int BMM(int a,int b){
if (a%b==0)
return b;
else
return BMM(b,a%b);
}
void main(void){
int a,b,c;
scanf("%d%d",a,b);
c=BMM(a,b);
printf("%d",c);
}
اگر این کد به دردت خورد اطلاع بده اگر نخورد باز هم بگو چرا به دردت نخورد ؟

Developer Programmer
دوشنبه 02 آبان 1384, 17:44 عصر
فکر کنم دوست عزیزمان خیلی الگوریتم را پیچیده کردن

تنها تفاوت کدتان با کد بنده در کمتر بودن تعداد متغیرها است !
علت بهینه نبودن کدم واسه اینه که به صورت Online نوشتمش !!

HOSSEINGHOLI
سه شنبه 10 آبان 1384, 07:54 صبح
از دوستان به خاطر راهنماییتان تشکر می کنم

majid_b
یک شنبه 10 آذر 1387, 16:54 عصر
فکر کنم دوست عزیزمان خیلی الگوریتم را پیچیده کردن من با زبان c می نویسم . کار اصلی که انجام می دهد روش نردبانی است که از این طریق ب.م.م بدست می آید :

#include<stdio.h>
int BMM(int a,int b){
if (a%b==0)
return b;
else
return BMM(b,a%b);
}
void main(void){
int a,b,c;
scanf("%d%d",a,b);
c=BMM(a,b);
printf("%d",c);
}اگر این کد به دردت خورد اطلاع بده اگر نخورد باز هم بگو چرا به دردت نخورد ؟


سلام

لطفا در مورد این کد یه کمی توضیح بدید