#include #include #include #include #include #define pb push_back #define MAX 1001000 using namespace std; typedef long long ll; int mark[MAX], counter = 0; ll primes[80000]; void genSieve() { int limit = sqrt(MAX) + 1; mark[1] = 1; for(int i = 4; i < MAX; i += 2){ mark[i] = 1; } primes[counter++] = 2; for(int i = 3; i < MAX; i += 2){ if(!mark[i]){ primes[counter++] = i; if(i <= limit){ for(int j = i * i; j < MAX; j += i * 2){ mark[j] = 1; } } } } } int main() { ll n, value; genSieve(); scanf("%lld", &n); ll sum = 0; for(int i = 0; i < n; i++){ scanf("%lld", &value); if(value == 1){ sum += value; continue; } vector v; ll idx = 0, pf = primes[idx]; while(pf * pf <= value){ while(value % pf == 0){ value /= pf; v.pb(pf); } pf = primes[++idx]; } if(value != 1){ v.pb(value); } ll ans = 1; for(int j = v.size() - 1; j >= 0; j--){ ans = (ll) (ans * v[j]); sum += (ans); } sum += 1; v.clear(); } printf("%lld\n", sum); return 0; }