What is the problem i am getting segmentation fault

#include
using namespace std;
void PrimeSieve(int *arr)
{
for (int i = 2; i <= 1000000; i += 2)
{
arr[i] = 1;
}
for (int i = 3; i<= 1000000; i+=2)
{
if (arr[i] == 0)
{
for (int j = i * i; j < 1000000; j = j + i)
{
arr[j] = 1;
}
}
}
arr[2] = 0;
arr[0] = arr[1] = 1;
}
int main()
{
int num;
cin >> num;
int arr[1000000] = {0};
PrimeSieve(arr);
int cnt=0;
int ans=0;
for (int i = 0; i < 1000000; i++)
{
if (arr[i] == 0)
{
cnt++;
if(cnt==num){
ans=i;
break;
}
}
}
cout<<ans;
}