# https://yukicoder.me/problems/no/3461 import math MAX_INT = 10 ** 12 def main(): N, K = map(int, input().split()) A = list(map(int , input().split())) B = list(map(int , input().split())) max_a = max(A) divisors_map = [[] for _ in range(max_a + 1)] for i in range(N): a =A[i] sqrt_a = int(math.sqrt(a)) divisors = [] for p in range(1, sqrt_a + 1): if a % p == 0: q = a // p divisors.append(p) if q != p: divisors.append(q) for d in divisors: divisors_map[d].append(i) border = [MAX_INT for _ in range(N)] ans = MAX_INT * N for a in reversed(range(1, max_a + 1)): for index in divisors_map[a]: x = B[index] % a x = (a - x) % a if border[index] > x: old_x = border[index] ans += x - old_x border[index] = x if ans <= K: print(a) return if __name__ == "__main__": main()