#include using namespace std; int p[1000001] = {0}; long dp[1000001]; vector prime; void init() { for (int i = 2; i*i < 1000001; i++){ if(!p[i]){ for (int j = 2; j*i < 1000001; j++){ p[i*j] = 1; } } } for (int i = 2; i < 1000001; i++){ if(!p[i]){ prime.push_back(i); } } } void findPrimeFactor(vector &primeFactor, vector &power, long x) { long temp = x; for (int i = 0; i < prime.size(); i++){ if(temp%prime[i] == 0){ primeFactor.push_back(prime[i]); int cnt = 0; while (temp%prime[i] == 0){ temp /= prime[i]; cnt++; } power.push_back(cnt); } } if(temp > 1){ primeFactor.push_back(temp); power.push_back(1); } } long solve(vector &primeFactor, vector &power, int i, long x) { if(x == 1){ //printf("1\n"); return 1; } if(x%primeFactor[i] != 0) i--; //printf("1 + %d*solve(%d,%ld)\n", primeFactor[i], x/primeFactor[i]); return 1 + primeFactor[i]*solve(primeFactor, power, i, x/primeFactor[i]); } long find (long x) { vector primeFactor; vector power; findPrimeFactor(primeFactor, power, x); int size = primeFactor.size(); return solve(primeFactor, power, size-1, x); } long longestSequence(vector a) { init(); long ans = 0; for (int i = 0; i < a.size(); i++){ ans += find(a[i]); } return ans; } int main() { int n; cin >> n; vector a(n); for(int a_i = 0; a_i < n; a_i++){ cin >> a[a_i]; } long result = longestSequence(a); cout << result << endl; return 0; }