Advertisement
_takumi

c4t2

Oct 20th, 2022 (edited)
1,085
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. int gcd(int a, int b) {
  5.     if (b == 0) {
  6.         return a;
  7.     }
  8.     a %= b;
  9.     return gcd(b, a);
  10. }
  11.  
  12. bool pr(int n) {
  13.     auto is_prime_number = true;
  14.     if (n == 0 || n == 1) {
  15.         is_prime_number = false;
  16.     } else {
  17.         for (int i = 2; i <= n / 2; ++i) {
  18.             if (n % i == 0) {
  19.                 is_prime_number = false;
  20.                 break;
  21.             }
  22.         }
  23.     }
  24.     return is_prime_number;
  25. }
  26.  
  27. int main() {
  28.     std::cin.sync_with_stdio(false);
  29.     std::cin.tie(nullptr);
  30.     int a;
  31.     int b;
  32.     std::cin >> a >> b;
  33.     int gcd_n = gcd(a, b);
  34.     int max_x = std::max(a / gcd_n, b / gcd_n);
  35.     a = a / gcd_n;
  36.     b = b / gcd_n;
  37.     int k = 1;
  38.     for (int i = 1; i <= sqrt(max_x); ++i) {
  39.         int a_lp = a / i;
  40.         int b_lp = b / i;
  41.         if (pr(i)) {
  42.             if (((a % i == 0) || (b % i == 0)) && (i > k)) {
  43.                 k = i;
  44.             }
  45.         }
  46.         if (pr(a_lp)) {
  47.             if ((a % i == 0) && (a_lp > k)) {
  48.                 k = a_lp;
  49.             }
  50.         }
  51.         if (pr(b_lp)) {
  52.             if ((b % i == 0) && (b_lp > k)) {
  53.                 k = b_lp;
  54.             }
  55.         }
  56.     }
  57.     auto res = k * gcd_n;
  58.     std::cout << res;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement