#include #include #include #include #include #include #include #define N number #define divisible(x, y) !(remainder((x),(y))) /* Find the largest prime factor of 317584931803 */ double largestPrimeFactor(register double n) { double sqrt(double x); double remainder(double x, double y); register double d = 3; register double rt; if(n < 2) return -1; while(divisible(n, 2)) n /= 2; if(n == 1) return 2; rt = sqrt(n); while(d <= rt) { if(divisible(n, d)) { n /= d; rt = sqrt(n); continue; } d += 2; } return n; } long int stick_break(long int size, long int multiplier) { long int divisor; if(size == 1) return size*multiplier; divisor = largestPrimeFactor(size); return stick_break(size/divisor, multiplier*divisor) + multiplier; } long int longestSequence(int a_size, long int* a) { // Return the length of the longest possible sequence of moves. long int sum = 0; for(int i = 0; i < a_size; i++) { sum += stick_break(a[i], 1); } return sum; } 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; }