import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { static Map numberOfMoves = new HashMap(); static long longestSequence(long[] a) { // Return the length of the longest possible sequence of moves. long sum = 0; for (int i = 0; i < a.length; i++) { sum = sum + findLongestSequence(a[i]); } return sum; } private static long findLongestSequence(long n) { if (n == 1) { return 1; } if (numberOfMoves.containsKey(n)) { return (long) numberOfMoves.get(n); } BigInteger big = new BigInteger(n + ""); if (big.isProbablePrime(128)) { numberOfMoves.put(n, n + 1); return n + 1; } long d = largestPrimeFactor(n); long result = 1 + d * findLongestSequence(n / d); numberOfMoves.put(n, result); return result; } public static long largestPrimeFactor(long n) { long primeFactor = 1; for (long i = 2; i <= n / i;) { if (n % i == 0) { primeFactor = i; n = n / i; } else { i++; } } if (primeFactor < n) { primeFactor = n; } return primeFactor; } 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(); } }