#include #include #include #include #include #include #include int isPrime(int number) { if (number < 2) return 0; if (number == 2) return 1; if (number % 2 == 0) return 0; for (int i=3; (i*i) <= number; i+=2) { if (number % i == 0 ) return 0; } return 1; } int main() { int n; long long int s=0; long int i,h; 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]); int r=0,c=0; //if(a[a_i]%2!=0 || a[a_i]%3!=0 || a[a_i]%5!=0 || a[a_i]%7!=0 || a[a_i]%11!=0 || a[a_i]%13!=0 || a[a_i]%17!=0 || a[a_i]%19!=0 || a[a_i]%23!=0 || a[a_i]%31!=0 || a[a_i]%29!=0 || a[a_i]%37!=0) if(a[a_i]%2!=0 && a[a_i]!=2) r = isPrime(a[a_i]); if(r) s=s+a[a_i]+1; else { long int k = a[a_i]; s=s+k; //printf("%ld ",k); while(k>1) { if(k%2 == 0) { s=s+k/2; // printf("%ld ",k/2); k=k/2; } else {c=0; for(i=3;i<=sqrt(k);i=i+2) { if(k%i == 0) { h=i; c=1; break; } } if(c == 1) { k=k/h; s=s+k; } else { s=s+1; break; } } } //s=s+1; } } printf("%lld\n", s); return 0; }