#include #include using namespace std; long long a, b, c, sol, N; long long Euclid(long long A, long long B) { long long r; while(B) { r = A % B; A = B; B = r; } return A; } int main() { int i, now; cin >> a >> b; c = Euclid(a, b); N = 1; sol = 200000000000000000LL; for(i = 1; i * i <= c; ++i) { now = Euclid(a + i, b + i); if(((a + i) * (b + i)) / now < sol || (((a + i) * (b + i)) / now == sol && N > i)) { sol = ((a + i) * (b + i)) / now; N = i; } if(c % i == 0) { now = Euclid(a + c / i, b + c / i); if(((a + c / i) * (b + c / i)) / now < sol || (((a + c / i) * (b + c / i)) / now == sol && N > c / i)) { sol = ((a + c / i) * (b + c / i)) / now; N = c / i; } } } c = abs(a - b); for(i = 1; i * i <= c; ++i) { now = Euclid(a + i, b + i); if(((a + i) * (b + i)) / now < sol || (((a + i) * (b + i)) / now == sol && N > i)) { sol = ((a + i) * (b + i)) / now; N = i; } if(c % i == 0) { now = Euclid(a + c / i, b + c / i); if(((a + c / i) * (b + c / i)) / now < sol || (((a + c / i) * (b + c / i)) / now == sol && N > c / i)) { sol = ((a + c / i) * (b + c / i)) / now; N = c / i; } } } for(i = 1; i <= 300000; ++i) { now = Euclid(a + i, b + i); if(((a + i) * (b + i)) / now < sol || (((a + i) * (b + i)) / now == sol && N > i)) { sol = ((a + i) * (b + i)) / now; N = i; } } cout << N << "\n"; return 0; }