#include long long unsigned int f(long long unsigned int a,int arr[]) { if(a==1) return 1; else { long long unsigned int i,c=a+1; for(i=1;i<=78498;i++) { if(a%arr[i]==0) { c=f(a/arr[i],arr)+a; break; } } return c; } } int main() { int n,i,temp=1; int arr[78499]; //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> int prime[1000001]; //memset(prime, true, sizeof(prime)); for(i=0;i<=1000000;i++) prime[i]=1; for (int p=2; p*p<=1000000; p++) { // If prime[p] is not changed, then it is a prime if (prime[p]==1) { // Update all multiples of p for (i=p*2; i<=1000000; i += p) prime[i] = 0; } } // Print all prime numbers for (int p=2; p<=1000000; p++) if (prime[p]) { arr[temp]=p; temp++; } //********************************************************************************************** scanf("%d",&n); long long unsigned int ans=0,a; for(i=1;i<=n;i++) { scanf("%llu",&a); ans+=f(a,arr); } printf("%llu",ans); return 0; }