#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>

int prime(long a){
    long int r=(int)sqrt(a);
    for(int i=2;i<=r;i++){
        if(a%i==0){
            return 0;
        }
    }
    return 1;
}

long int longestSequence(int n, long int* a) {
    //  Return the length of the longest possible sequence of moves.
    long ans=0;
    for(int i=0;i<n;i++){
        long te=a[i];
        long ta=1,ta1=1;
        int r;
        part1:
        r=(int)sqrt(a[i]);
        if(prime(a[i])==1){
            r=-1;
        }
        for(long int j=r;j>1;j--){
            if(a[i]%j==0){
                if(prime(j)==1){
                    //printf("%ld %ld\n",j,a[i]/j);
                    if((prime(a[i]/j)==1&&a[i]/j<=j)||prime(a[i]/j)==0){
                        ta1*=j;
                        ta+=ta1;
                        a[i]=a[i]/j;
                        //printf("a  %ld\n",ta1);
                        goto part1;
                    }    
                }
                if((prime(a[i]/j)==1&&prime(j)==0)||(prime(a[i]/j)==1&&prime(j)==1&&a[i]/j>j)){
                    ta1*=a[i]/j;
                    ta+=ta1;
                    a[i]=j;
                    //printf("a  %ld\n",ta1);
                    goto part1;
                }
            }
        }
        if(r=-1){
            ta+=te;
        }
        ans+=ta;
        if(te==1){
            ans--;
        }
    }
    return ans;
}

int main() {
    int n; 
    scanf("%i", &n);
    long int *a = malloc(sizeof(long int) * n);
    for (int a_i = 0; a_i < n; a_i++) {
       scanf("%li",&a[a_i]);
    }
    long int result = longestSequence(n, a);
    printf("%ld\n", result);
    return 0;
}