#include <iostream> #include <fstream> #include <bitset> #include <vector> using namespace std; #define llu long long int const int zecela8 = 10000000; bitset< zecela8+3 > v; vector< llu > primes; vector< llu > primesofa; int main() { for(int i = 3 ; i*i <= zecela8 ; i ++) if(v[i] == 0) for(int j = i*i ; j <= zecela8 ; j += 2*i ) v[j] = 1; primes.push_back(2); for(int i = 3 ; i <= zecela8 ; i+= 2) if (v[i] == 0) primes.push_back(i); /*cout<<"primes until "<< zecela8; for(auto p:primes) cout<<p<<" "; cout<<'\n'; cout<<"primes of a\n";*/ llu a,b; cin >> a >> b; for(auto prime:primes) if (a%prime == 0) primesofa.push_back(prime); //for(auto p:primesofa) //cout<<p<<" "; bool notfound = true; while(b>a && notfound == true) { notfound = false; for(auto prime:primesofa) if (b%prime == 0) notfound = true; if(notfound) b--; } //cout<<"\nb="<<b; if(b == a) cout<<"-1"; else cout<<b-a; return 0; }