#include using namespace std; #define ll long long #define mod 1000000007LL #define eps 1e-13 #define PI 3.141592653589793238L #define INF 1000000011 #define INFLL 1000000000000000011LL // #define space printf(" ") #define endl '\n' #define vi vector #define vll vector #define vc vector #define vs vector #define pii pair #define pll pair #define pil pair #define pli pair #define pcc pair #define pdd pair #define mp make_pair #define F first #define S second #define pb(x) push_back(x) #define fo(i,a,n) for(i = (a); i < (n); i++) #define sd(x) scanf("%d", &(x)) #define pd(x) printf("%d", (x)) #define pdn(x) printf("%d\n", (x)) #define slld(x) scanf("%lld", &(x)) #define plld(x) printf("%lld", (x)) #define plldn(x) printf("%lld\n", (x)) #define sllf(x) scanf("%llf", &(x)) #define pllf(x) printf("%.9llf", (x)) #define pllfn(x) printf("%.9llf\n", (x)) #define sch(x) scanf("%c", &(x)) #define pch(x) printf("%c", (x)) #define pchn(x) printf("%c\n", (x)) #define gtl(x) getline(cin, (x)) #define flsh fflush(stdout) #define sws ios_base::sync_with_stdio(false); cin.tie(0) #define gcd __gcd #define clr(x) memset(x,0,sizeof(x)) #define all(a) (a).begin(), (a).end() #define foreach(i,a) for(__typeof((a).begin()) i = (a).begin(); i != (a).end(); ++i) #define sz(a) (int)((a).size()) #define io_file freopen("D:/Coding Problems/Contest/input_file.in", "r", stdin);freopen("D:/Coding Problems/Contest/output_file.out", "w", stdout) ll modx(ll Base, ll exponent) { ll ans = 1; if(Base == 1) return Base; while(exponent) { if(exponent & 1) ans = (ans * Base)%mod; Base = (Base * Base)%mod; exponent = exponent >> 1; } return ans; } ll inmodx(ll num) { return (modx(num, mod-2LL)); } bool cmp()//true for a before b { bool ans = 0; return ans; } struct ST_Node { ST_Node() { return; } void assign_value_(int val) { return; } void merge_nodes_(ST_Node& left, ST_Node& right) { return; } }; const int N = (1e6) + 9; const int M = (N<<2) + 9; const int LOGN = ((int)log2(N)) + 3; const int LOGM = ((int)log2(M)) + 3; const int BUCK = 100; bool isp[N]; vll p; void sieve() { int i, j; isp[0] = isp[1] = 1; fo(i,2,1005) if(!isp[i]) for(j = i+i; j < N; j+=i) isp[j] = 1; p.pb(2LL); fo(i,3,N) if(!isp[i]) p.pb((ll)i); return; } int main() { sws; // clock_t clk; // clk = clock(); // io_file; // srand (time(NULL)); //Code here sieve(); int n, i, j; ll ans = 0LL, a, b, val; cin >> n; fo(i,1,n+1) { cin >> a; b = a; val = 0LL; fo(j,0,sz(p)) { while(b % p[j] == 0) { val += b; b /= p[j]; } } if(b > 1LL) { val += b; } val++; ans += val; } cout << ans; // Code ends here // clk = clock() - clk; // cerr << fixed << setprecision(6) << "Time: " << ((double)clk)/CLOCKS_PER_SEC << "\n"; return 0; }