#include using namespace std; #define int long long // computes gcd(a,b) int gcd(int a, int b) { while (b) { int t = a%b; a = b; b = t; } return a; } // computes lcm(a,b) int lcm(int a, int b) { return a / gcd(a, b)*b; } int A, B; int m, best_n, ans; void get_ans (int i) { int x = m / i; int N = x - (A % x); int l = lcm (A + N, B + N); if (l < ans && N > 0) { ans = l; best_n = N; } if (l == ans && N < best_n) { best_n = N; } } #undef int int main() { #define int long long cin >> A >> B; if (A < B) swap(A, B); m = A - B; if (m == 0) { cout << 1 << "\n"; return 0; } ans = 1000000000000000001; best_n = 0; for (int i = 1; i * i <= m; i++) { if (m % i != 0) continue; get_ans(i); get_ans(m / i); } cout << best_n << "\n"; return 0; }