#include #include using namespace std; bool tab[1000000]; vector primes; int main() { primes.push_back(2); for(long long int i = 3; i < 1000000; i += 2) { if(!tab[i]) { primes.push_back(i); for(long long int j = i+i; j < 1000000; j += i) tab[j] = true; } } long long int count = 0; int n; scanf("%d", &n); for(int i = 0; i < n; i++) { long long int x; scanf("%lld", &x); if(x > 1) count += x; int idx = 0; vector divs; while(idx < primes.size() && x >= primes[idx]) { while(x % primes[idx] == 0) { divs.push_back(primes[idx]); x /= primes[idx]; } idx++; } if(x > 1) divs.push_back(x); idx = divs.size()-1; long long int curCount = 1; while(idx > 0) { count += curCount; curCount *= divs[idx]; idx--; } count += curCount; } printf("%lld\n", count); return 0; }