Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- int gcd(int a, int b) {
- if (b == 0) {
- return a;
- }
- a %= b;
- return gcd(b, a);
- }
- bool pr(int n) {
- auto is_prime_number = true;
- if (n == 0 || n == 1) {
- is_prime_number = false;
- } else {
- for (int i = 2; i <= n / 2; ++i) {
- if (n % i == 0) {
- is_prime_number = false;
- break;
- }
- }
- }
- return is_prime_number;
- }
- int main() {
- std::cin.sync_with_stdio(false);
- std::cin.tie(nullptr);
- int a;
- int b;
- std::cin >> a >> b;
- int gcd_n = gcd(a, b);
- int max_x = std::max(a / gcd_n, b / gcd_n);
- a = a / gcd_n;
- b = b / gcd_n;
- int k = 1;
- for (int i = 1; i <= sqrt(max_x); ++i) {
- int a_lp = a / i;
- int b_lp = b / i;
- if (pr(i)) {
- if (((a % i == 0) || (b % i == 0)) && (i > k)) {
- k = i;
- }
- }
- if (pr(a_lp)) {
- if ((a % i == 0) && (a_lp > k)) {
- k = a_lp;
- }
- }
- if (pr(b_lp)) {
- if ((b % i == 0) && (b_lp > k)) {
- k = b_lp;
- }
- }
- }
- auto res = k * gcd_n;
- std::cout << res;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement