#include using namespace std; #define arep(i,arr) for(auto &i : arr) #define rep(i,e) for(int i = 0; i < e; i++) #define rep2(i,s,e) for(int i = s; i < e; i++) #define rep3(i,e,x) for(int i = 0 ; i < e; i+=x) #define rep4(i,s,e,x) for(int i = s; i < e; i+=x) #define pb push_back #define mp make_pair typedef pair ii; typedef vector vi; typedef vector> vvi; typedef vector vii; typedef long long ll; typedef vector> vll; const int M = 1e6; int n; ll ar[105]; vi primes; int sieve[M+5]; int values[M+5]; void getPrimes(){ rep2(i,2,M+1){ if(sieve[i] == 0){ primes.pb(i); rep4(j,i,M+1,i) sieve[j] = i; } } } ll compute(ll x){ ll z = x; ll val = 0; int start = primes.size() - 1; if(x <= M) return values[x]; while(x > 1){ ll y = x; for(int i = start; i >= 0; i--){ if(x % primes[i] == 0){ val = val>primes[i]?val:primes[i]; start = val>primes[i]?start:i; x = x/primes[i]; break; } } if(y == x) break; } if(x != 1) return x*values[z/x] + 1; else{ return val* compute(z/val) + 1; } } int main(){ cin>>n; rep(i,n){ cin>>ar[i]; } getPrimes(); ll total = 0; rep2(i,1,M+1){ if(i == 1){ values[i] = 1; continue; } if(sieve[i] == i) values[i] = i+1; else values[i] = sieve[i]*values[i/sieve[i]] + 1; }; rep(i,n){ total += compute(ar[i]); } cout << total << endl; }