import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Main { static PrintStream out = System.out; static PrintStream err = System.err; static final int INF = 1000000000; static int _sieve_size; static boolean[] bs; // 10^7 should be enough for most cases static List primes = new ArrayList(); // compact list of primes in form of vector static TreeMap memo = new TreeMap<>(); static void sieve(int upperbound) { // create list of primes in [0..upperbound] _sieve_size = upperbound + 1; // add 1 to include upperbound bs = new boolean[_sieve_size]; Arrays.fill(bs,true); // set all bits to 1 bs[0] = bs[1] = false; // except index 0 and 1 for (long i = 2; i < _sieve_size; i++) if (bs[(int)i]) { // cross out multiples of i starting from i * i! for (long j = i * i; j < _sieve_size; j += i) bs[(int)j] = false; primes.add((int)i); // also add this vector containing list of primes } } static boolean isPrime(long N) { // a good enough deterministic prime tester if (N < _sieve_size) return bs[(int)N]; // O(1) for small primes return BigInteger.valueOf(N).isProbablePrime(10); } static long primeFactors(long N) { // remember: vi is vector of integers, long is long long long lastFactor = 0; int PF_idx = 0; long PF = primes.get(PF_idx); // using PF = 2, 3, 4, ..., is also ok while (N != 1 && (PF * PF <= N)) { // stop at sqrt(N), but N can get smaller while (N % PF == 0) { N /= PF; lastFactor = PF; } // remove this PF PF = primes.get(++PF_idx); // only consider primes! } return (N == 1) ? lastFactor : N; // if pf exceeds 32-bit integer, you have to change vi } static long stickMove(long size) { //out.printf("stickMove(%d)%n", size); if (memo.containsKey(size)) return memo.get(size); long result = 0; if (size == 1) result = 1; else if (isPrime(size)) { result = size + 1; } else { // divide by smallest prime divisor // int i = Collections.binarySearch(primes, (int) (size / 2)); // if (i < 0) i = (i + 1) * -1; // if (i >= primes.size()) i = primes.size() - 1; // out.printf("insertion point of %d is %d, ", size / 2, i); // long div = primes.get(i); // out.printf("between primes %d and %d%n", (i - 1 >= 0) ? primes.get(i - 1) : 0, (i + 1 < primes.size()) ? primes.get(i + 1) : 0); // for (i = i - 1; size % div != 0; --i) // { // div = primes.get(i); // } long div = primeFactors(size); //out.printf("1 + %d * ", div); result = stickMove(size / div) * (div) + 1; //out.printf("result of stickMove(%d) is %d%n", size / div, stickMove(size / div)); } memo.put(size, result); return result; } public static void main(String[] args) { Scanner in = new Scanner(System.in); // if necessary // BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // PrintWriter pr = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out))); sieve(10000000); int n = in.nextInt(); long moves = 0; for (int i = 0; i < n; ++i) { long x = in.nextLong(); long res = stickMove(x); //out.printf("result of stickMove(%d) is %d%n", x, res); moves += res; } out.println(moves); // pr.close(); } } /* inputs 100 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1 136117223861 */