#include #include #include #include #include #include typedef long long ll; using namespace std; unordered_map dp; vector get_prime(ll num){ vector f; ll s = 2; while(num > 1){ while(num % s == 0){ f.push_back(s); num /= s; } s++; if(s * s > num){ if(num > 1) f.push_back(num); break; } } return f; } ll compute(ll num){ if(num == 1) return 1; if(dp[num] == NULL){ vector m_primes = get_prime(num); ll m_prime = *max_element(m_primes.begin(), m_primes.end()); ll ret = num / m_prime; ll ans = m_prime * compute(ret) + 1; dp[num] = ans; } return dp[num]; } ll solve(vector& arr){ ll sum = 0; for(int i = 0; i < arr.size(); i++){ sum += compute(arr[i]); } return sum; } int main() { int n; cin >> n; vector arr(n); for (int i = 0; i < n; i++) { cin >> arr[i]; } cout << solve(arr) << '\n'; return 0; }