import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { static int[] primeNumbers; static int primeNumbersNum = 0; static { initPrimes(); } private static void initPrimes() { boolean[] sieve = new boolean[1000001]; sieve[0] = true; sieve[1] = true; for (int i = 2; i <= 1000; ++i) { if (!sieve[i]) { ++primeNumbersNum; for (int j = i * i; j <= 1000000; j += i) { sieve[j] = true; } } } for (int i = 1001; i <= 1000000; ++i) { if (!sieve[i]) { ++primeNumbersNum; } } primeNumbers = new int[primeNumbersNum]; primeNumbersNum = 0; for (int i = 2; i <= 1000000; ++i) { if (!sieve[i]) primeNumbers[primeNumbersNum++] = i; } } private static long smallestPrimeDivider(long val) { long sqrt = (long)Math.sqrt(val); for (int i = 0; i < primeNumbersNum; ++i) { int divider = primeNumbers[i]; if (divider > sqrt) break; if (val % divider == 0) return divider; } return val; } static long longestSequence(long[] a) { long result = 0; for (int i = a.length - 1; i >= 0; --i) { long val = a[i]; while (val > 1) { long divider = smallestPrimeDivider(val); val = val / divider; result += val; } result += a[i]; } return result; } 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(); } }