#include<bits/stdc++.h> #define rep(i,start,lim) for(lld i=start;i<lim;i++) #define repd(i,start,lim) for(lld i=start;i>=lim;i--) #define scan(x) scanf("%lld",&x) #define print(x) printf("%lld ",x) #define f first #define s second #define pb push_back #define mp make_pair #define br printf("\n") #define sz(a) lld((a).size()) #define YES printf("YES\n") #define NO printf("NO\n") #define all(c) (c).begin(),(c).end() using namespace std; #define INF 1011111111 #define LLINF 1000111000111000111LL #define EPS (double)1e-10 #define MOD 1000000007 #define PI 3.14159265358979323 using namespace std; typedef long double ldb; typedef long long lld; lld powm(lld base,lld exp,lld mod=MOD) {lld ans=1;while(exp){if(exp&1) ans=(ans*base)%mod;exp>>=1,base=(base*base)%mod;}return ans;} typedef vector<lld> vlld; typedef pair<lld,lld> plld; typedef map<lld,lld> mlld; typedef set<lld> slld; #define sync ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define endl '\n' #define N 1000005 #define fre freopen("1.in","r",stdin); freopen("1.out","w",stdout); lld pr[N]; vlld primes; int main() { //sync; rep(i,2,N) if(pr[i]==0) { for(lld j=2*i;j<N;j+=i) pr[j]=max(pr[j],i); primes.pb(i); } reverse(all(primes)); lld n,ans=0,mul,x; cin>>n; rep(i,1,n+1) { cin>>x; mul=1; if(x==1) { ans++; continue; } while(1) { //cout<<ans<<" "<<mul<<" "<<x<<endl; if(x==1) break; lld mk=-1,orig=x; for(auto i:primes) if(orig%i==0) { mk = max(mk,i); while(orig%i==0) orig/=i; } if(orig) mk=max(mk, orig); if(mk==-1 or mk==x) { ans+=(mul*(x+1)); break; } ans+=(mul); mul*=mk; x/=mk; } } cout<<ans; return 0; }