الگوریتم دریافت (ب م م) یا بزرگترین مقسوم مشترک بین دو عدد در زبان C++



الگوریتم دریافت (ب م م) یا بزرگترین مقسوم مشترک بین دو عدد در زبان C++


برای دریافت ب م م دو عدد از روش اقلیدس استفاده میکنیم. که در نخست نحوه کارکرد فرمول اقلیدس را مورد مطالعه قرار می دهیم و بعدا این فرمول را تبدیل به کد مینمایم با استفاده از زبان C++.

ما با استفاده از تقسیمات متوالی میتوانیم بزرگترین مقسوم مشترک بین دو عدد را دریابیم که با مثالی به تشریح آن می پردازیم.

فرض کنید ما دو عدد داریم 846 و 204 درنخست عدد بزرگتر را تقسیم عدد کوچک میکنیم و بعدا عدد دوم را تقسیم بر باقی مانده عملیه اولی مینمایم و این روش را تا جای ادامه میدیم که تا باقی مانده صفر شود. و آخرین باقی مانده مقسوم علیه غیر صفر ب م م دو عدد ما میباشد.

برای وضاحت مسئله به عکس زیر نگاه کنید:

قسمی که در عکس بالا میبینید عدد 6 ب م م اعداد 846 و 204 میباشد.

برای تبدیل این فرمول به کد در زبان C++ نخست الگوریتم آنرا مینویسیم که قرار ذیل میباشد.
  1. شروع
  2. a , b را بخوان
  3. a % b را در c قرار بده
  4. b را در a قرار بده
  5. c را در b قرار بده
  6. a % b را در c قرار بده
  7. اگر c != 0 سپس برو به خط 4
  8. b را چاپ کن
  9. پایان
برای حل این الگوریتم نیاز به 3 متغییر از جنس int داریم که در این مثال a,b,c تعریف شده است.
متغییر a عدد اولی را با دستو cin از ورودی دریافت نموده و در خود ذخیره منماید.
متغییر b عدد دومی را با دستور cin از ورودی دریافت نموده و در خود ذخیره مینماید.
متغییر c باقی مانده حاصل تقسیم متغییر های a و b را در خود ذخیره منماید.
 چنانچه در شرح فورمول اقلیدس اشاره بر تکرار تقسیمات نموده بودیم پس نیاز به حلقه داریم تا این تقسیمات را برای ما تکرار نماید و شرط این حلقه این است که تا وقتی باید تکرار شود که باقی مانده ما صفر شود.
و در آخر متغییر b را چاپ کند چون داخل حلقه اخرین باقی مانده در داخل b ذخیره میشود. 

سوالات تانرا در کامنت بنویسید!
#include <iostream>
using namespace std;

int main(){
    int a,b,c;
    std::cout << "Enter First Number:" << '\n';
    std::cin >> a;
    std::cout << "Enter Second Number:" << '\n';
    std::cin >> b;
    c = a%b;
    while (c!=0) {
      a = b;
      b = c;
      c = a%b;
    }
    std::cout << "Result:" << b <<'\n';
}

Comments

Post a Comment