#include #include using namespace std; int a, b; long long best_lcm = -1; int best_n; int gcd(int a, int b) { if (!b) return a; return gcd(b, a % b); } long long lcm(long long a, long long b) { return a * b / gcd(a, b); } void check_solution(int gcd) { int n = gcd - a % gcd; if (n == gcd) n = 0; long long current_lcm = lcm(a + n, b + n); if (best_lcm == -1 || current_lcm < best_lcm || current_lcm == best_lcm && n < best_n) { best_lcm = lcm(a + n, b + n); best_n = n; } } int main() { cin >> a >> b; if (a > b) { swap(a, b); } int dif = b - a; if (dif == 0) { cout << "0"; return 0; } for (int i = 1; i * i <= dif; ++i) { if (dif % i) continue; check_solution(i); check_solution(dif / i); } cout << best_n; }