#include using namespace std; void primeFactorization( long n, vector& primes, vector& p, vector& s ) { p.clear(); s.clear(); long i = 0; while (n > 1) { if (i == primes.size()) { s.push_back( 1 ); p.push_back( n ); break; } if (n % primes[i] == 0) { long si = 0; do { n /= primes[i]; si++; } while (n % primes[i] == 0); s.push_back( si ); p.push_back( primes[i] ); } i++; } } long findPrimes(long n, vector& primes) { primes.clear(); vector sieve(n+1, true); long sn = sqrt(n); for (long p=2; p <= sn; p++) { if (sieve[p]) { for (long i=p*2; i<=n; i += p) sieve[i] = false; } } for (long p=2; p<=n; p++) { if (sieve[p]) { primes.push_back(p); } } return primes.size(); } long longestSequence( vector& a, vector& primes ) { vector p, s; long R = 0; for (long k=a.size()-1; k>=0; k--) { if (a[k] != 1) { primeFactorization( a[k], primes, p, s ); long sz = p.size(); long Rk = a[k]; long f = a[k]; for (long i=sz-1; i>=0; i--) { for (long j=s[i]; j>0; j--) { Rk += a[k] / f; f /= p[i]; } } R += Rk; } else { R += 1; } } return R; } int main() { vector primes; findPrimes( 1e5, primes ); int n; cin >> n; vector a(n); for(int a_i = 0; a_i < n; a_i++) { cin >> a[a_i]; } long result = longestSequence(a, primes); cout << result << endl; return 0; }