process.stdin.resume(); process.stdin.setEncoding('ascii'); var input_stdin = ""; var input_stdin_array = ""; var input_currentline = 0; process.stdin.on('data', function (data) { input_stdin += data; }); process.stdin.on('end', function () { input_stdin_array = input_stdin.split("\n"); main(); }); function readLine() { return input_stdin_array[input_currentline++]; } /////////////// ignore above this line //////////////////// function longestSequence(a) { // Return the length of the longest possible sequence of moves. return a.reduce((acc, n) => acc + longest(n), 0); } function largestPrime(n) { for(let i = 2; i <= Math.sqrt(n); i++) { if (n % i === 0 ) { return largestPrime(n/i); } } // n is 1 or prime return n; } function longest(n) { if(n === 1) { return 1; } const p = largestPrime(n); return 1 + p * longest( n/p ); } function main() { var n = parseInt(readLine()); a = readLine().split(' '); a = a.map(Number); var result = longestSequence(a); process.stdout.write("" + result + "\n"); }