#include using namespace std; typedef long long ll; typedef vector vl; typedef pair pll; int n; ll a; ll ans; ll cur; vl vv; class MathFunction { private: long long sieve_size; bitset<10000010> bs; vector primes; public: bool isPrime(long long N){ if(N <= sieve_size) return bs[N]; for(int i = 0; i < (int)primes.size(); i++) if(N % primes[i] == 0) return false; return true; } void sieve(long long upperbound){ sieve_size = upperbound+1; bs.set(); bs[0] = bs[1] = 0; for(long long i = 2; i < sieve_size; i++){ if(bs[i]){ for(long long j = i * i; j < sieve_size; j+=i) bs[j] = 0; primes.push_back((int) i); } } } //}; vector primeFactors(long long N){ vector factors; long long idx = 0, pf = primes[idx]; while(N!=1 && (pf * pf <= N)){ while(N % pf == 0){ N /= pf; factors.push_back(pf); } pf = primes[++idx]; } if(N!=1) factors.push_back(N); return factors; } }; int main() { cin >> n; MathFunction ff; ff.sieve(10000000); ans = 0; while (n--){ cin >> a; vv = ff.primeFactors(a); cur = 1; for (int i=vv.size()-1; i>=0; i--){ ans += cur; a /= vv[i]; cur *= vv[i]; } ans += cur; } cout << ans << endl; return 0; }