#include #include using namespace std; namespace { const int n_max = 100; void sieve(int p_max, vector& p) { vector prime(p_max + 1, true); prime[0] = prime[1] = false; for (long long i = 2; i <= p_max; ++i) { if (prime[i]) { p.push_back(i); if (i * i <= p_max) { for (long long j = i * i; j <= p_max; j += i) prime[j] = false; } } } } } int main() { vector p; sieve(1000100, p); int n; cin >> n; long long result = 0; for (int i = 0; i < n; i++) { long long x; cin >> x; vector d; // all prime divisors long long y = x; for (int j = 0; j < p.size() && y > 1; j++) { while (y % p[j] == 0) { d.push_back(p[j]); y /= p[j]; } } if (y > 1) d.push_back(y); // it is prime number too, it is not divided by any number from p[] long long t = 1, q = 1; y = x; for (int j = d.size() - 1; j >= 0; j--) { y = y / d[j]; q *= d[j]; t += q; } result += t; } cout << result << endl; return 0; }