#!/bin/python import sys import math from collections import defaultdict sys.setrecursionlimit(100000) def sieve(n): A = [1]*n A[0] = 0 A[1] = 0 for i in xrange(2,int(math.sqrt(n))+1): if A[i] == 1: j = i*i while j < n: A[j] = 0 j += i B = [] for i in xrange(n): if A[i] == 1: B.append(i) return B Ti = [0,1,3,4,7] Ti_map = defaultdict.fromkeys(range(5)) for i in xrange(5): Ti_map[i] = Ti[i] def calcEvilTn(n,primeSet,primeArr): if n <= 4: return Ti[n] if n in primeSet: Ti_map[n] = n+1 return n+1 if n in Ti_map: return Ti_map[n] x = 2 breaked = False for x in primeArr: if n%x == 0: breaked = True break if not breaked: Ti_map[n] = n+1 return n+1 return n+calcEvilTn(n/x,primeSet,primeArr) def calcTn(n,primeSet,primeArr): Ti_map[n] = calcEvilTn(n,primeSet,primeArr) return Ti_map[n] def longestSequence(a,n): # Return the length of the longest possible sequence of moves. s = 0 primeArr = sieve(1000001) primeSet = set(primeArr) for i in xrange(n): s += calcTn(a[i],primeSet,primeArr) return s if __name__ == "__main__": n = int(raw_input().strip()) a = map(long, raw_input().strip().split(' ')) result = longestSequence(a,n) print result