#include using namespace std; using lld = long long int; lld A[1000]; vector primes; const lld kapa = 1100000; lld K[10000]; lld m; void Sieve(); int main() { Sieve(); lld n; lld ans = 0; scanf("%lld", &n); for(int i = 0; i < n; i++) scanf("%lld", &A[i]); for(int i = 0; i < n; i++) { lld napa = A[i]; m = 0; for(vector::iterator j = primes.begin(); j != primes.end(); j++) { while(napa % *j == 0) { K[m++] = *j; napa /= *j; } } if(napa != 1) K[m++] = napa; napa = 1; lld zeta = 1; for(int j = m - 1; j >= 0; j--) { zeta *= K[j]; napa += zeta; } ans += napa; } printf("%lld\n", ans); return 0; } void Sieve() { bool A[kapa]; memset(A, true, sizeof(A)); A[0] = A[1] = false; for(int i = 2; i * i <= kapa; i++) { if(A[i]) { for(int j = 2 * i; j < kapa; j += i) A[j] = false; } } for(int i = 0; i < kapa; i++) if(A[i]) primes.push_back(i); }