#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #pragma comment (linker, "/STACK:256000000") #pragma GCC optimize("Ofast") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") using namespace std; const int maxN = 110; const int maxL = 1100000; bool p[maxL]; int q[maxL], cntq; int n; long long a[maxN]; long long d[maxL]; int k; unordered_map < long long, long long > M; inline long long value(const vector < pair < long long, int > > &n) { long long res = 1; for (int i = 0; i < n.size(); ++i) { for (int j = 0; j < n[i].second; ++j) { res *= n[i].first; } } return res; } long long calc(vector < pair < long long, int > > p) { long long n = value(p); if (M.count(n)) { return M[n]; } long long res = 1; for (int i = 0; i < p.size(); ++i) { if (p[i].second > 0) { --p[i].second; res = max(res, 1LL + calc(p) * p[i].first); ++p[i].second; } } return M[n] = res; } vector < pair < long long, int > > factor(long long n) { long long m = n; vector < pair < long long, int > > res; for (int i = 0; i < cntq && (long long)(q[i]) * q[i] <= n; ++i) { int r = 0; while (m % q[i] == 0) { ++r; m /= q[i]; } if (r > 0) { res.push_back(make_pair(q[i], r)); } } if (m > 1) { res.push_back(make_pair(m, 1)); } return res; } void gen(const vector < pair < long long, int > > &p, int index, long long v = 1) { if (index == p.size()) { d[k++] = v; return ; } for (int i = 0; i <= p[index].second && i <= 1; ++i) { gen(p, index + 1, v); v *= p[index].first; } } int main() { //freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); for (int i = 2; i < maxL; ++i) { if (p[i]) { continue; } q[cntq++] = i; for (int j = i + i; j < maxL; j += i) { p[j] = true; } } cin >> n; for (int i = 0; i < n; ++i) { cin >> a[i]; } long long res = 0; for (int i = 0; i < n; ++i) { vector < pair < long long, int > > p = factor(a[i]); //k = 0; //gen(p, 0); //M.clear(); //sort(d, d + k); res += calc(p); } cout << res << endl; return 0; }