#include using namespace std; #define ll long long #define INF 2000000010 #define LINF 1LL << 61 int get_n(int, int, int); int gcd(int, int); int main() { int a, b, d, n, nMin; ll lcm, lcmMin; cin >> a >> b; if(a == b) { cout << 0 << '\n'; return 0; } if(a > b) swap(a, b); for(nMin = INF, lcmMin = LINF, d = 1; d * d <= b - a; ++d) if((b - a) % d == 0) { n = get_n(a, b, d); lcm = 1LL * (a + n) * (b + n) / d; if(lcm < lcmMin || (lcm == lcmMin && n < nMin)) lcmMin = lcm, nMin = n; n = get_n(a, b, (b - a) / d); lcm = 1LL * (a + n) * (b + n) / ((b - a) / d); if(lcm < lcmMin || (lcm == lcmMin && n < nMin)) lcmMin = lcm, nMin = n; } cout << nMin << '\n'; return 0; } int get_n(int a, int b, int d) { int k, k1 = (b - a) / d; for(k = a / d + 1; gcd(k, k1) != 1; ++k) ; return k * d - a; } int gcd(int a, int b) { int r; while(b) { r = a % b; a = b; b = r; } return a; }