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 //////////////////// const primeList = [2]; function isPrime(number) { for (let i = 0; i < primeList.length && primeList[i] <= Math.sqrt(number); i++) { if (number % primeList[i] === 0) { return false; } } return true; } function longestSequence(number) { if (number === 1) { return 1; } const solution = []; let primeListIndex = 0; let i = primeList[primeListIndex]; while (i <= Math.sqrt(number) || number === 1) { if (number % i === 0) { solution.unshift(i); number = number / i; } else { primeListIndex++; if (primeListIndex >= primeList.length) { i++; while (!isPrime(i)){ i++; } primeList.push(i); } else { i = primeList[primeListIndex]; } } } solution.unshift(number); let sum = 1; let currentSum = 1; solution.forEach(num => { currentSum = currentSum * num; sum += currentSum; }); return sum; } function combineNumber(numbers) { let sum = 0; numbers.forEach(number => sum += longestSequence(number)); return sum; } function main() { var n = parseInt(readLine()); a = readLine().split(' '); a = a.map(Number); var result = combineNumber(a); process.stdout.write("" + result + "\n"); }