from collections import defaultdict class UnionFind(): def __init__(self, n): self.n = n self.root = [-1]*(n+1) self.rank = [0]*(n+1) def find(self, x): if(self.root[x] < 0): return x else: self.root[x] = self.find(self.root[x]) return self.root[x] def unite(self, x, y): x = self.find(x) y = self.find(y) if(x == y): return elif(self.rank[x] > self.rank[y]): self.root[x] += self.root[y] self.root[y] = x else: self.root[y] += self.root[x] self.root[x] = y if(self.rank[x] == self.rank[y]): self.rank[y] += 1 def same(self, x, y): return self.find(x) == self.find(y) def size(self, x): return -self.root[self.find(x)] def roots(self): return [i for i, x in enumerate(self.root) if x < 0] def group_size(self): return len(self.roots()) def group_members(self): group_members = defaultdict(list) for member in range(self.n): group_members[self.find(member)].append(member) return group_members def Eratosthenes(N): is_prime = [1 for i in range(N+1)] is_prime[0] = is_prime[1] = 0 P = [] for p in range(2,N+1): if is_prime[p] == 0: continue P.append(p) for d in range(2,N//p+1): q = p*d is_prime[q] = 0 return P P = Eratosthenes(200000) n = len(P) N = int(input()) r = n + N uf = UnionFind(n+N) A = list(map(int,input().split())) G = [[] for i in range(200001)] for i in range(N): G[A[i]].append(i) g = 200000 for i in range(n): u = N + i p = P[i] f = 1 for j in range(200001): if p*j > 200000: break for v in G[p*j]: if uf.same(u,v): continue f = 0 r -= 1 uf.unite(u,v) if f == 0: g = min(g,p) r -= f ans = min((r-1)*g,r*2) print(ans)