#include using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); i++) templatebool chmax(T &x, T y){if(x>=y)return false;x=y;return true;} templatebool chmin(T &x, T y){if(x<=y)return false;x=y;return true;} int main(){ long long N, K; cin >> N >> K; vector A(N), B(N); rep(i, N)cin >> A[i]; rep(i, N)cin >> B[i]; vector> s(N); rep(i, N){ for(int j = 1; j*j <= A[i]; j++)if(A[i]%j==0){ s[i].insert(j); s[i].insert(A[i]/j); } } long long ok = 1, ng = 1234567890, mi; while(ng-ok>1){ mi = (ng+ok)/2; long long c = 0; rep(i, N){ long long d = 123456789012; auto itr = s[i].lower_bound(mi); while(itr!=s[i].end()){ chmin(d, (B[i]+*itr-1)/(*itr)*(*itr)-B[i]); itr++; } c += d; } if(c>K)ng = mi; else ok = mi; } cout << ok << endl; }