Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để tìm GCD

Ước chung lớn nhất (GCD) của hai số là số lớn nhất chia cả hai.

Ví dụ:Giả sử chúng ta có hai số là 45 và 27.

45 = 5 * 3 * 3
27 = 3 * 3 * 3

Vì vậy, GCD của 45 và 27 là 9.

Một chương trình để tìm GCD của hai số được đưa ra như sau.

Ví dụ

#include <iostream>
using namespace std;
int gcd(int a, int b) {
   if (b == 0)
   return a;
   return gcd(b, a % b);
}
int main() {
   int a = 105, b = 30;
   cout<<"GCD of "<< a <<" and "<< b <<" is "<< gcd(a, b);
   return 0;
}

Đầu ra

GCD of 105 and 30 is 15

Trong chương trình trên, gcd () là một hàm đệ quy. Nó có hai tham số, tức là a và b. Nếu b lớn hơn 0, thì a được trả về hàm main (). Nếu không thì hàm gcd () sẽ gọi đệ quy chính nó với các giá trị b và a% b. Điều này được chứng minh bằng đoạn mã sau -

int gcd(int a, int b) {
   if (b == 0)
   return a;
   return gcd(b, a % b);
}

Một chương trình khác để tìm GCD của hai số như sau -

Ví dụ

#include<iostream>
using namespace std;
int gcd(int a, int b) {
   if (a == 0 || b == 0)
   return 0;
   else if (a == b)
   return a;
   else if (a > b)
   return gcd(a-b, b);
   else return gcd(a, b-a);
}
int main() {
   int a = 105, b =30;
   cout<<"GCD of "<< a <<" and "<< b <<" is "<< gcd(a, b);
   return 0;
}

Đầu ra

GCD of 105 and 30 is 15

Trong chương trình trên, gcd () là một hàm đệ quy. Nó có hai tham số, tức là a và b. Nếu a hoặc b bằng 0, hàm trả về 0. Nếu a hoặc b bằng nhau, hàm trả về a. Nếu a lớn hơn b, hàm gọi đệ quy chính nó với các giá trị a-b và b. Nếu b lớn hơn a thì hàm gọi đệ quy chính nó với các giá trị a và (b - a). Điều này được chứng minh bằng đoạn mã sau.

int gcd(int a, int b) {
   if (a == 0 || b == 0)
   return 0;
   else if (a == b)
   return a;
   else if (a > b)
   return gcd(a - b, b);
   else return gcd(a, b - a);
}