#include using namespace std; #define FOR(i,a,b) for (int i = (a); i <= (b); i++) #define FORD(i,a,b) for (int i = (a); i >= (b); i--) #define REP(i,a) FOR(i,0,(int)(a)-1) #define reset(a,b) memset(a,b,sizeof(a)) #define all(x) x.begin(), x.end() #define uni(x) x.erase(unique(all(x)), x.end()); #define BUG(x) cout << #x << " = " << x << endl #define BUGP(x) cout << #x << " = " << x._1 << ", " << x._2 << endl #define PR(x,a,b) {cout << #x << " = "; FOR (_,a,b) cout << x[_] << ' '; cout << endl;} #define CON(x) {cout << #x << " = "; for(auto _i:x) cout << _i << ' '; cout << endl;} #define mod 1000000007 #define pi acos(-1) #define eps 1e-10 #define pb push_back #define sqr(x) (x) * (x) #define _1 first #define _2 second long long n, sieve[1000006], val, ans; vector prime; vector factorize(long long x) { vector ret; for (auto i: prime) while (x % i == 0) { x /= i; ret.pb(i); } if (x != 1) ret.pb(x); return ret; } int main() { ios::sync_with_stdio(false); FOR (i, 2, 1000000) if (!sieve[i]) { prime.pb(i); for (int j = i * 2; j <= 1000000; j += i) sieve[j] = 1; } cin >> n; while (n--) { cin >> val; ans += val; auto v = factorize(val); if (v.size() > 1) { long long tmp = 1; FOR (i, 1, v.size() - 1) tmp = 1 + tmp * v[i]; ans += tmp; } else if (v.size() == 1 && v[0] > 1) ans++; } cout << ans; }