import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { static HashMap largestPrime = new HashMap(); static HashMap moves = new HashMap(); static long longestSequence(long[] a) { long result = 0; for (int i = 0; i < a.length; i++) { result += getMoves(a[i]); } return result; } public static long getMoves(long num) { if (num == 1) { return 1; } if (moves.containsKey(num)) { return moves.get(num); } long prime = getLargestPrime(num); moves.put(num, 1 + (prime * (getMoves(num / prime)))); return moves.get(num); } public static long getLargestPrime(long num) { if (largestPrime.containsKey(num)) { return largestPrime.get(num); } long numCopy = num; long prime = 0; int count = 0; for (int i = 1; i <= num / i; i += 2) { long factor = i; if (i == 1) factor = 2; while (numCopy % factor == 0) { numCopy /= factor; count++; } if (count != 0) prime = Math.max(prime, factor); count = 0; } if (numCopy != 1) { prime = numCopy; } largestPrime.put(num, prime); return prime; } 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(); } }