#include using namespace std; vectorv1; void SieveOfEratosthenes(int n) { // Create a boolean array "prime[0..n]" and initialize // all entries it as true. A value in prime[i] will // finally be false if i is Not a prime, else true. bool prime[n+1]; memset(prime, true, sizeof(prime)); for (int p=2; p*p<=n; p++) { // If prime[p] is not changed, then it is a prime if (prime[p] == true) { // Update all multiples of p for (int i=p*2; i<=n; i += p) prime[i] = false; } } // Print all prime numbers for (int p=2; p<=n; p++) if (prime[p]) v1.push_back(p); } int main() { long long int i,j,k,n,s,p; cin>>n; long long int total=0; long long int a[n]; int flag; for(i=0;i>a[i]; SieveOfEratosthenes(1000000); for(i=0;i0) { //cout<<"here"; flag=0,p; for(j=0;jsqrt(s)) break; else if(s%v1[j]==0) { flag=1; break; } } if(flag==0) { total=total+s+1; break; } else { total=total+s; s=s/v1[j]; } } } } cout<