using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; class TEST{ static void Main(){ Sol mySol =new Sol(); mySol.Solve(); } } class Sol{ public void Solve(){ int NN = (int) 1e6; bool[] isPrime = new bool[NN]; List<long> P = new List<long>(); for(int i=2;i<NN;i++) isPrime[i] = true; for(int i=2;i<NN;i++){ if(!isPrime[i]) continue; P.Add(i); for(int j=i+i;j<NN;j+=i) isPrime[j] = false; } //P.Reverse(); long ans = 0; foreach(var a in A){ long unit = a; long piece = 1; long move = a; foreach(var i in P){ if(unit % i == 0){ while(unit % i == 0){ piece *= i; move += a / piece; unit /= i; } } } if(unit != 1) move += 1; ans += move; } Console.WriteLine(ans); } int N; long[] A; public Sol(){ N = ri(); A = rla(); } static String rs(){return Console.ReadLine();} static int ri(){return int.Parse(Console.ReadLine());} static long rl(){return long.Parse(Console.ReadLine());} static double rd(){return double.Parse(Console.ReadLine());} static String[] rsa(char sep=' '){return Console.ReadLine().Split(sep);} static int[] ria(char sep=' '){return Array.ConvertAll(Console.ReadLine().Split(sep),e=>int.Parse(e));} static long[] rla(char sep=' '){return Array.ConvertAll(Console.ReadLine().Split(sep),e=>long.Parse(e));} static double[] rda(char sep=' '){return Array.ConvertAll(Console.ReadLine().Split(sep),e=>double.Parse(e));} }