import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; import java.util.stream.Collectors; public class Solution { static List primes = new ArrayList<>(); static Set primesSet = new HashSet<>(); static void simpleSieve(int limit) { boolean mark[] = new boolean[limit + 1]; for (int i = 0; i < mark.length; i++) mark[i] = true; for (int p = 2; p*p < limit; p++) { if (mark[p] == true) { for (int i = p * 2; i < limit; i += p) { mark[i] = false; } } } for (int p = 2; p < limit; p++) { if (mark[p]) { primes.add((long) p); primesSet.add((long) p); } } } static long computeFactorNumbers(long x) { long f = (long) (Math.sqrt(x) + 1); List factors = new ArrayList<>(); long p = x; int place = 0; while((place < primes.size() && primes.get(place) < p) || primesSet.contains(p)) { if(p % primes.get(place) == 0){ factors.add(primes.get(place)); p = p/primes.get(place); continue; } place++; } if(p > 1){ factors.add(p); } long result = 1; long sum = 1; Collections.reverse(factors); for(Long factor : factors){ result = result * factor; sum += result; } return sum; } public static void main(String args[]) { Scanner in = new Scanner(System.in); long n = in.nextLong(); simpleSieve(1000001); long res = 0; for (int i = 0; i < n; i++) { res += computeFactorNumbers(in.nextLong()); } System.out.println(res); } }