#include #include #include using namespace std; const int N = 105; const int M = 1e6 + 5; const int F = 1e6; int n; long long m[N],res; bool p[M]; vector d; vector vt,t; void prime() { p[1] = false; fill(p + 2,p + F + 1,true); for (int i = 2;i <= 1000;i++) if(p[i]) for (int j = i;j <= F/i;j++) p[i * j] = false; return; } int main() { scanf("%d",&n); for (int i = 1;i <= n;i++) scanf("%lld",&m[i]); prime(); for (int i = 2;i <= F;i++) if(p[i]) t.push_back(i); for (int i = 1;i <= n;i++) { d.clear(); vt.clear(); long long a = m[i]; for (int j = 0;j < t.size();j++) { long long x = t[j]; int cnt = 0; if(x > a) break; while(a % x == 0) { ++cnt; a /= x; } if(cnt > 0) { vt.push_back(x); d.push_back(cnt); } } if(a > 1) { vt.push_back(a); d.push_back(1); } long long rs = 1; while(!vt.empty()) { rs = rs * vt.back(); d.back()--; if(d.back() == 0) { vt.pop_back(); d.pop_back(); } res += rs; } res++; } printf("%lld",res); return 0; }