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

Tìm LCM của số hữu tỉ trong C ++

Ở đây chúng ta sẽ xem cách tìm LCM của số hữu tỉ. Chúng tôi có một danh sách các số hữu tỉ. Giả sử danh sách giống như {2/7, 3/14, 5/3}, thì LCM sẽ là 30/1.

Để giải quyết vấn đề này, chúng ta phải tính LCM của tất cả các tử số, sau đó gcd của tất cả các mẫu số, sau đó LCM của các số hữu tỉ, sẽ như thế nào -

$$ LCM =\ frac {LCM \:of \:all \:𝑛𝑢𝑚𝑒𝑟𝑎𝑡𝑜𝑟𝑠} {GCD \:of \:all \:𝑑𝑒𝑛𝑜𝑚𝑖𝑛𝑎𝑡𝑜𝑟𝑠} $$

Ví dụ

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int LCM(int a, int b) {
   return (a * b) / (__gcd(a, b));
}
int numeratorLCM(vector<pair<int, int> > vect) {
   int result = vect[0].first;
   for (int i = 1; i < vect.size(); i++)
      result = LCM(vect[i].first, result);
   return result;
}
int denominatorGCD(vector<pair<int, int> >vect) {
   int res = vect[0].second;
   for (int i = 1; i < vect.size(); i++)
      res = __gcd(vect[i].second, res);
   return res;
}
void rationalLCM(vector<pair<int, int> > vect) {
   cout << numeratorLCM(vect) << "/"<< denominatorGCD(vect);
}
int main() {
   vector<pair<int, int> > vect;
   vect.push_back(make_pair(2, 7));
   vect.push_back(make_pair(3, 14));
   vect.push_back(make_pair(5, 3));
   cout << "LCM of rational numbers: "; rationalLCM(vect);
}

Đầu ra

LCM of rational numbers: 30/1