#include using namespace std; long long n, a[109]; long long ans = 0; vector primes; bool is_prime[1000009]; void sieve() { memset(is_prime, true, sizeof(is_prime)); is_prime[0] = is_prime[1] = false; for (long long i = 2; i <= 1000000; i++) { if (is_prime[i]) { primes.push_back(i); long long j = i * i; while (j <= 1000000) { is_prime[j] = false; j += i; } } } } long long f(long long y) { long long x = y; vector prime_factors; for (int i = 0; i < primes.size(); i++) { while (x % primes[i] == 0) { prime_factors.push_back(primes[i]); x /= primes[i]; } } if (x > 1) prime_factors.push_back(x); long long ret = 1, tmp = 1; for (int i = prime_factors.size() - 1; i >= 0; i--) { tmp *= prime_factors[i]; ret += tmp; } return ret; } int main() { scanf("%lld", &n); sieve(); for (int i = 0; i < n; i++) { scanf("%lld", &a[i]); ans += f(a[i]); } printf("%lld\n", ans); }