#define ull unsigned long long #include #include #include using namespace std; unsigned long long gcd(unsigned long long a,unsigned long long b) { if (b == 0) return a; return gcd(b,a%b); } bool isPrime(ull n) { ull sqrtt = sqrt(n); for (ull i = 2; i <= sqrtt; ++i) { if (n%i == 0) { return 0; } } return 1; } int main() { ull a, b, max = 0; ull p1=0, p2=0; cin >> a >> b; for (int i = a; i < b; i++) { if (isPrime(i)) { p1 = i; break; } } for (int i = b; i>a; --i) { if (isPrime(i)) { p2 = i; break; } } if (p1 == p2) { ull maxim = 0; for (ull i = a; i < b; ++i) { for (ull j = b; j>i; --j) { if (j - i + 1 > maxim && gcd(i, j) == 1) { maxim = j - i + 1; } } } if (maxim == 0) { cout << "-1\n"; } else { cout << maxim << "\n"; } } else { max = p2 - p1 + 1; for (ull i = a; i < p1; ++i) { for (ull j = b; j> p2; --j) { if (j - i + 1 > max && gcd(i, j) == 1) { max = j - i + 1; } } } cout << max << "\n"; } }