# مهندسی نرم افزار > مباحث مرتبط با مهندسی نرم‌افزار > الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها > سوال: الگوریتم محاسبه ب م م دو عدد

## pc_helper

سلام
الگوریتم محاسبه بزگترین مقسوم علیه مشترک دو عدد را کسی داره؟ 
خواهش می کنم اگه کسی می تونه راهنماییم کنه.



ممنونم

----------


## Salar Ashgi

سلام ، میتونید از دو روش بازگشتی یا غیر بازگشتی استفاده کنید ، البته روش های دیگری در بخش

نظریه اعداد ریاضیات گسسته ، نیز وجود دارد !!!

Eculidian Algorithm for GCD

روش بازگشتی :

GCD(a,b) = GCD(b,a%b)

موفق و پیروز باشید !!!!

----------


## powerboy2988

Int BMM(int a,int b)
{
Int c;
If (a<b) 
  Exchange (a,b) 
While(b!=0)
{
  c= a mod b;
  a=b;
  b=c;
}
Return b;
}

----------


## adonis27

سلام 
میشه کسی فرمول بدست آوردن ک.م.م و ب.م.م رو اینجا بنویسه
من یادم نیست

----------


## Blue_Eyes

*الگوریتم اقلیدس*  در این روش، برای محاسبهٔ ب.م.م. دو عدد x و y که به صورت   نمایش داده می‌شود، چنین عمل می‌شود (فرض بر این است که x از y بزرگتر  است، اگر چه در حالت برعکس نیز، صرفاً با تغییر نام x و y این روش قابل  استفاده خواهد بود):

از x به اندازهٔ y کم کن، و مقدار جدید را به جای x جایگذاری کنقدم بالا را آن قدر تکرار کن تا x از y کوچک‌تر شودجای x و y را عوض کن و قدم‌ها بالا را تکرار کن، تا وقتی که مقدار x  صفر شود؛ در این حالت، مقدار y برابر با ب.م.م. دو عدد x و y خواهد بود.
 به عنوان نمونه، اگر x برابر ۷۰ و y برابر ۲۵ باشد، مراحل کار چنین خواهد بود:
 ب.م.م.(۲۵و۷۰) ← ب.م.م.(۲۵و۴۵) ← ب.م.م.(۲۵و۲۰) ← ب.م.م.(۲۰و۲۵)
← ب.م.م.(۲۰و۵) ← ب.م.م.(۵و۲۰) ← ب.م.م.(۵و۱۵) ← ب.م.م.(۵و۱۰)
← ب.م.م.(۵و۵) ← ب.م.م.(۵و۰) ← ب.م.م. = ۵
*مثالی از این الگوریتم به زبان سی*

int gcd(int x, int y)
{    if (y == 0)
 {        return x;    }
 else 
{        return gcd(y, x % y);    } }

----------


## yashar_sb_sb

int gcd(int a,int b){return a%b?gcd(b,a%b):a;}

----------


## zadbakhsh

مثالی به زبان C#‎

static void Main(string[] args)        {
            Console.WriteLine("Enter First Number: ");
            int First =Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Enter Second Number: ");
            int Second = Convert.ToInt32(Console.ReadLine());
            if(First<Second)
            {
                int replacement=First;
                First = Second;
                Second = replacement;
            }
            Console.WriteLine("Your Numbers are {0} and {1}",First,Second);
            while (First%Second!=0)
            {
                int remin = First % Second;
                First = Second;
                Second = remin;
            }
            Console.WriteLine("Your Euclid's GCD is {0}!!!", Second);
            Console.ReadKey();
        }

----------

