#include using namespace std; const int N = 1e6 + 10; bool isPrime[N]; vector primes; bool is_prime(long long n) { for(int i : primes) { if(i*i > n) { break; } if(n%i == 0) { return false; } } return true; } long long getAns(long long a) { if(a == 1) { return 1; } long long x = -1, n = a; for(int i : primes) { if(a%i == 0) { x = i; while(a%i == 0) { a /= i; } } } if(a > 1) { x = a; } return 1+x*getAns(n/x); } void pre() { fill(isPrime, isPrime+N, true); isPrime[0] = isPrime[1] = false; for(int i = 2; i < N; i++) { if(isPrime[i]) { for(int j = 2*i; j < N; j += i) { isPrime[j] = false; } } } for(int i = 0; i < N; i++) { if(isPrime[i]) { primes.push_back(i); } } } int main() { pre(); int n; scanf("%d", &n); long long ans = 0; while(n--) { long long a; scanf("%lld", &a); ans += getAns(a); } printf("%lld\n", ans); }