Advertisement
LEGEND2004

GCD long version

Jul 6th, 2023 (edited)
942
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.03 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define pb push_back
  4.  
  5.  
  6.  
  7. signed main()
  8. {
  9.     int n , m;
  10.     cin >> n >> m;
  11.     int a = n , b = m;
  12.     vector<int> A;
  13.  
  14.     //for n
  15.     for(int i = 2; (i * i) <= n; i++){
  16.         if(n % i)
  17.             continue;
  18.         while(n % i == 0){
  19.             A.pb(i);
  20.             n /= i;
  21.         }
  22.     }
  23.     if(n > 1)
  24.         A.pb(n);
  25.  
  26.     //for m
  27.     vector<int> B;
  28.     for(int i = 2; (i * i) <= m; i++){
  29.         if(m % i)
  30.             continue;
  31.         while(m % i == 0){
  32.             B.pb(i);
  33.             m /= i;
  34.         }
  35.     }
  36.  
  37.     if(m > 1)
  38.         B.pb(m);
  39.  
  40.     int x = A.size() , y = B.size();
  41.     vector<int> GCD;
  42.     int ind = 0;
  43.     for(int i = 0; i < x; i++){
  44.         while(B[ind] < A[i]){
  45.             ind++;
  46.         }
  47.         if(A[i] == B[ind]){
  48.             GCD.pb(A[i]);
  49.             ind++;
  50.         }
  51.     }
  52.     int ans = 1;
  53.     for(int i : GCD)
  54.         ans *= i;
  55.  
  56.  
  57.     int lcm = (a * b) / ans;
  58.     cout << ans << endl;
  59.     cout << lcm << endl;
  60.  
  61.  
  62.  
  63. }
  64.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement