/* ---------- STL Libraries ---------- */ // IO library #include #include #include #include #include // algorithm library #include #include #include #include #include // container library #include #include #include #include #include #include #include #include #include #include #include /* ---------- Namespace ---------- */ using namespace std; /* ---------- Type ---------- */ using ll = long long; #define int ll #define P pair /* ---------- Constants */ const double PI = 3.141592653589793238462643383279; const ll MOD = 1e9 + 7; const int INF = 1LL << 55; /* v-v-v-v-v-v-v-v-v Main Part v-v-v-v-v-v-v-v-v */ vector divisor(int n) { vector ret; for (int i = 1; i * i <= n; i++) { if (n % i == 0) { ret.push_back(i); if (i != n / i) ret.push_back(n / i); } } return move(ret); } signed main() { int A, B; cin >> A >> B; vector divs = divisor(A + B); sort(divs.begin(), divs.end()); for (int div : divs) { if ((B + div) % A == 0 && (div + A) % B == 0) { cout << div << endl; return 0; } } cout << -1 << endl; return 0; }