#include using namespace std; long long longestSequence(vector & aa) { //sieve const int n = 1000001; vector p(n, true); p[0] = false; int r = (int)(::std::ceil(sqrt(n))); for (int i = 1; i < r; ++i) { if (p[i]) { int j = (i + 1) * 2 - 1; while (j < n) { p[j] = false; j += (i + 1); } } } vector primes; for (int i = 0; i < n; ++i) { if (p[i]) { primes.push_back(i + 1); } } /* cout << primes.size() << endl; for (const int& p : primes) { cout << p << " "; } cout << endl; */ long long c = 0; for (const long long& a : aa) { long long x = a; long long pieces = 1; vector factors; for (int i = 0; i < (int)(primes.size()); ++i) { while (x % primes[i] == 0) { factors.push_back(primes[i]); x = x / primes[i]; } } if (x != 1) { factors.push_back(x); } for (int i = (int)(factors.size() - 1); i >= 0; --i) { c += pieces; pieces *= factors[i]; } c += pieces; } return c; } int main() { int n; cin >> n; vector a(n); for(int a_i = 0; a_i < n; a_i++){ cin >> a[a_i]; } long long result = longestSequence(a); cout << result << endl; return 0; }