#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef long double ld; typedef std::vector vi; typedef std::vector vb; typedef std::vector vs; typedef std::vector vd; typedef std::vector vll; typedef std::vector > vvi; typedef vector vvll; typedef std::vector > vpi; typedef vector vvpi; typedef std::pair pi; typedef std::pair pll; typedef std::vector vpll; const long long mod = 1000000007; const unsigned gen_seed = std::chrono::system_clock::now().time_since_epoch().count(); std::mt19937_64 gen(gen_seed); #define all(c) (c).begin(),(c).end() #define forn(i, a, b) for(int i = a; i < b; i++) #define read(x) scanf("%d", &x) #define readv(x, n) vi x(n); forn(i,0,n) scanf("%d", &x[i]) #define pb push_back #define mp make_pair int main() { const int LIMIT = 1000000; vb isp(LIMIT+1, true); vi mindiv(LIMIT+1, 0); forn(i,0,LIMIT+1) mindiv[i]=i; int upbound = (int)sqrt((double)LIMIT); vi p; for (int m = 2; m <= upbound; m++) { if (isp[m]) { p.pb(m); for (int k = m * m; k <= LIMIT; k += m) { isp[k] = false; mindiv[k]=min(mindiv[k], m); } } } for(int m = upbound+1; m<=LIMIT; m++) { if (isp[m]) { p.pb(m); } } int n; scanf("%d", &n); ll ans = 0; forn(i,0,n) { ll k; scanf("%lld", &k); vll div; for(auto d : p) { if(k== 1) break; while(k%d ==0) div.pb(d), k/=d; } ll res = 1; if(k>1) div.pb(k); for(auto d : div) res = res*d + 1; ans += res; } cout<