#include #include #include #include #include #include using namespace std; bool isPrime( unsigned x ){ if ( x == 0 || x == 1 ){ return false; } if ( x == 2 ){ return true; } if ( x % 2 == 0 ){ return false; } for ( unsigned i = 3; i <= int(sqrt(x)); i++){ if ( x % i == 0 ){ return false; } } return true; } long wierdSumPrimes( long x ){ vector primes; vector powers; long countPow = 0; if ( x == 1 ){ return 1; } if ( x == 2 ){ return 3; } if ( x % 2 == 0 ){ primes.push_back(2); while ( x % 2l == 0 ){ x /= 2l; countPow++; } powers.push_back(countPow); countPow = 0; } for ( long i = 3; i <= int(sqrt(x)); i++){ if ( x % i == 0 && isPrime(i) ){ primes.push_back(i); while ( x % i == 0){ x /= i; countPow++; } powers.push_back(countPow); countPow = 0; } } if ( x != 1){ primes.push_back(x); powers.push_back(1); } long sum = 1; long prod = 1; for ( int i = primes.size() - 1; i >= 0; i--){ // cout << "returning : " << sum << endl; while ( powers[i] > 0 ){ prod *= primes[i]; sum += prod; powers[i]--; // cout << sum << endl; } } return sum; } long longestSequence(vector a) { long sum = 0; for(auto i : a ){ sum += wierdSumPrimes(i); } return sum; } 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; }