#include using namespace std; const int N = 1e6 + 3; vector prime; bool isPrime[N]; bool good(int n) { // Corner cases if (n <= 1) return false; if (n <= 3) return true; // This is checked so that we can skip // middle five numbers in below loop if (n%2 == 0 || n%3 == 0) return false; for (int i=5; i*i<=n; i=i+6) if (n%i == 0 || n%(i+2) == 0) return false; return true; } int main() { memset(isPrime, 1, sizeof isPrime); for (int p = 2; p * p < N; p++) for (int i = p << 1; i < N; i += p) isPrime[i] = 0; for (int p = 2; p < N; p++) if (isPrime[p]) prime.push_back(p); int sz = prime.size(); int n; scanf("%d", &n); long long ans = 0; for (int i = 0; i < n; i++) { long long a; scanf("%lld", &a); ans += a; for (int j = 0; j < sz; j++) { while (a % prime[j] == 0) { a /= prime[j]; ans += a; } } if (a != 1) { ans += 1; } } cout << ans << endl; return 0; }