#include #include using namespace std; long long dif_max; long long a, b; int gcd ( int a, int b ) { int c; while ( a != 0 ) { c = a; a = b%a; b = c; } return b; } void genereaza(long long m, long long n) { if (m > b || n > b) return; if (m < 1 || n < 1) return; if (a <= m && m <= b && a <= n && n <= b) { dif_max = max(dif_max, m - n + 1); } genereaza(2 * m - n, m); genereaza(2 * m + n, m); genereaza(m + 2 * n, n); } void solve_full() { long long b2 = b, a2; dif_max = -1; while (a < b2 && gcd(a, b2) > 1) { b2--; } if (gcd(a, b2) != 1) { dif_max = -1; for (int i = a + 1; i < b; i++) { b2 = b; if (b2 - i + 1 < dif_max) break; while(i > b2 && b2 - i + 1 > dif_max && gcd(i, b2) > 1) b2--; if (gcd(i, b2) == 1) dif_max = max(dif_max, b2 - i + 1); } cout << dif_max << '\n'; return; } dif_max = b2 - a + 1; for (int i = 1; i <= dif_max; i++) { a2 = a + i; b2 = b; if (b2 - a2 + 1 <= dif_max) break; while (b2 - a2 + 1 > dif_max && gcd(a2, b2) > 1) b2--; if (gcd(a2, b2) == 1) dif_max = max(dif_max, b2 - a2 + 1); } cout << dif_max << '\n'; } int main() { cin >> a >> b; solve_full(); return 0; }