#include #include #include #include #include #define SIZE 1000010 #define PB push_back using namespace std; typedef long long ll; ll sp[SIZE]; vector pr; int main() { for (int i = 1 ; i < SIZE ; ++i) { if (i & 1) sp[i] = i; else sp[i] = 2; } for (int i = 3 ; i * i < SIZE ; i += 2) { if (sp[i] != i) continue; for (int j = i * i ; j < SIZE ; j += i) { if (sp[j] == j) sp[j] = i; } } pr.PB(2); for (int i = 3 ; i < SIZE ; i += 2) { if (sp[i] == i) pr.PB(i); } int n, sz = pr.size(); cin >> n; vector a(n); ll ans = 0; for (int i = 0; i < n; i++) { ll num; cin >> a[i]; num = a[i]; vector p, c; for (int i = 0 ; i < sz ; ++i) { if (num % pr[i] == 0) { p.PB(pr[i]); c.PB(1); num /= pr[i]; } while (num % pr[i] == 0) { c[c.size() - 1]++; num /= pr[i]; } } if (num != 1) { p.PB(num); c.PB(1); } ll prd = 1; for (int j = p.size() - 1 ; j >= 0 ; --j) { while (c[j]) { ans += prd; prd *= p[j]; c[j]--; } } ans += prd; } cout << ans << endl; /* Enter your code here. Print output to STDOUT */ return 0; }