#include using namespace std; #define MOD 1000000007 #define pb(x) push_back(x) #define mp(x,y) make_pair(x,y) #define FF first #define SS second #define s(n) scanf("%d",&n) #define sl(n) scanf("%lld",&n) #define sf(n) scanf("%lf",&n) #define ss(n) scanf("%s",n) #define sc(n) {char temp[4]; ss(temp); n=temp[0];} #define INF (int)1e9 #define LINF (long long)1e18 #define EPS 1e-9 #define maX(a,b) ((a)>(b)?(a):(b)) #define miN(a,b) ((a)<(b)?(a):(b)) #define abS(x) ((x)<0?-(x):(x)) #define rP(n) (sieve[n>>6]|=(1<<((n>>1)&31))) #define gP(n) sieve[n>>6]&(1<<((n>>1)&31)) typedef long long ll; typedef unsigned long long LL; typedef pair PII; typedef pair PLL; typedef pair TRI; typedef vector VI; typedef vector VL; typedef vector vl; typedef vector VII; typedef vector VT; long long maxPrimeFactors(long long n) { // Initialize the maximum prime factor // variable with the lowest one long long maxPrime = -1; // Print the number of 2s that divide n while (n % 2 == 0) { maxPrime = 2; n >>= 1; // equivalent to n /= 2 } // n must be odd at this point, thus skip // the even numbers and iterate only for // odd integers for (int i = 3; i <= sqrt(n); i += 2) { while (n % i == 0) { maxPrime = i; n = n / i; } } // This condition is to handle the case // when n is a prime number greater than 2 if (n > 2) maxPrime = n; return maxPrime; } void SieveOfEratosthenes(int n) { bool prime[n+1]; memset(prime, true, sizeof(prime)); for (int p=2; p*p<=n; p++) { if (prime[p] == true) { for (int i=p*2; i<=n; i += p) prime[i] = false; } } } LL funct(LL num) { if(num==1) return 1; LL lp = maxPrimeFactors(num); if(lp==num) return num+1; LL ans = lp*funct(num/lp) + 1 ; return ans; } int main() { LL n; cin >> n; // LL x = maxPrimeFactors(n); // cout << x << endl; // ll n; // sl(n); LL num,ans=0; while(n--) { cin >> num; ans = ans + funct(num); } cout << ans << endl; }