#include using namespace std; int arr[1000005],g=0; 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])arr[g++]=p; //cout << p << " "; } // Driver Program to test above function int main() { int n; cin>>n; long long int a[n+5]; //cout << "Following are the prime numbers smaller " //<< " than or equal to " << n << endl; SieveOfEratosthenes(1000005); //cout<>a[i]; ans+=a[i]; while(1){ int flag=0; //cout<(sqrt(a[i])+1))break; if(a[i]%arr[j]==0){flag=1;ans+=(a[i]/arr[j]);a[i]=(a[i]/arr[j]);break;} } if(flag==0){ans+=1;a[i]=1;} } } cout<