#include #include #include #include #include #include #include long int nrMovesStick(long int length) { int i; long int moves = length + 1; if (length == 1) { return 1; } while (length % 2 == 0) { length /= 2; moves += length; } for (i = 3; i < sqrt(length); i += 2) { while (length % i == 0) { length /= i; moves += length; } } return moves; } long int longestSequence(int a_size, long int* a) { // Return the length of the longest possible sequence of moves. int i; long int longestSeq = 0; for (i = 0; i < a_size; i++) { longestSeq += nrMovesStick(a[i]); } return longestSeq; } 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; }