Deepak and prime que solution

#include
using namespace std;

#define ll long long
void prime_sieve(int p)
{
p[1]=0,p[2]=1;
for(int i=3 ;i<=1000005;i+=2){
p[i]=1;
}
for(ll i=3;i<=1000005;i+=2 ){
if(p[i]==1){
for(ll j =i
i;j<=1000005;j =j +i)
p[j]=0;
}
}
}

int main() {

int n;
cin>>n;

int p[1000005] = {0};
prime_sieve(p);

ll cum_sum[500005]={0};
ll k=0;
for(ll i=1;i<=500005;i++){
if(p[i]==1){
cum_sum[k]=i;
k++;
}
}
cout<<cum_sum[n-1];
}
//i am not able to pass all test cases tell what mistake i did in deepak prime quetion on hackers blocks.

Please send the code by generating a link on ide.codingblocks.com

You know since you are travelling throughout 500005 then why not just count till k gets to n like in loop only as soon as K == N print the number and break out of the loop. You are just doing unneccesary work.

1 Like

even after that don’t passes all test cases…

please reply tell me something what mistake i did there.

Your code is printing 0 for some cases like 49999

toh wahi to puch rha hu karna kya h correction??

#include <iostream>
using namespace std;

#define ll long long
void prime_sieve(int *p)
{
  p[1]=1,p[2]=1;
    for(int i=2 ;i<=1000005;i++){
        p[i]=1;
    }
    for(ll i=2;i<=1000005;i++ ){
        if(p[i]==1){
            for(ll j =i*i;j<=1000005;j =j +i)
               p[j]=0;
        }
    }
}

int main() {

    int n;
    cin>>n;

    int p[1000005] = {0};
    prime_sieve(p);
 
 ll k=0;
    for(ll i=2;i<1000005;i++){
        if(p[i]==1){
            k++;
			if(k==n){
				cout<<i;
				return 0;
			}
       } 
      }
   //cout<<cum_sum[n-1];
}

CHANGES KRDIYE SIEVE MEI GALTI THI MATCH KARLENA