import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; import javafx.util.Pair; public class Solution { static List primes; static long longestSequence(long[] a) { // Return the length of the longest possible sequence of moves. primes = getListPrimes(); long res = 0; for (int i = 0; i < a.length; i++ ) res += solve(a[i]); return res; } static long solve(long n) { List> factors = new ArrayList<>(); long m = n; for (int i = 0; i < primes.size(); i++) { int p, c; p = primes.get(i); c = 0; while (m % p == 0 && m > 0) { m /= p; c += 1; } if (c > 0) factors.add(new Pair<>(p, c)); if (m <= 1) break; } Collections.reverse(factors); long r, t; r = t = 1; if (m > 1) { t = m; r += m; } for (int i = 0; i < factors.size(); i++) { int f, c; f = factors.get(i).getKey(); c = factors.get(i).getValue(); while (c-- > 0) { t = t * f; r += t; } } return r; } static List getListPrimes() { int max = 1000000; boolean [] era = new boolean[max]; List res = new ArrayList<>(); for (int i = 2; i < Math.sqrt(max); i++) { if (era[i]) continue; res.add(i); for (int j = 1; j <= (max-1) / i; j++) era[i * j] = true; } for (int i = res.get(res.size()-1) + 1; i < max; i++) if (!era[i]) res.add(i); return res; } public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); long[] a = new long[n]; for(int a_i = 0; a_i < n; a_i++){ a[a_i] = in.nextLong(); } long result = longestSequence(a); System.out.println(result); in.close(); } }