1 case is not working

#include
using namespace std;

bool sieve[500000];
int main() {
sieve[0]=sieve[1]=1;
for(int i=2;ii<=500000;i++)
if(!sieve[i])
for(int j=i
i;j<=500000;j+=i)
sieve[j]=1;
int n;
cin>>n;
int counter=1;
while(n && counter<=500000)
{
counter++;
if(!sieve[counter])
n–;
}
cout<<counter;
}

The 500,000th prime is 7,368,787.
hence size of sieve must be more than this

Reference Code