Prime Visits - WA - Why?

#include<bits/stdc++.h>
using namespace std;

int SieveOfEratosthenes(int s, int e)
{
bool prime[e+1];
memset(prime, true, sizeof(prime));
int count=0;
prime[1]=false;

for (int p=2; p*p<=e; p++) 
{ 
    if (prime[p] == true) 
    { 	
        for (int i=p*p; i<=e; i += p){
			prime[i] = false;
		}
            
	}
}

for(int j=s; j<=e; j++){
	if(prime[j]){
		count++;
	}
}

return count;
}

int main() {
int t;
cin>>t;
while(t–){
int s, e;
cin>>s>>e;
cout<<SieveOfEratosthenes(s,e)<<"\n";
}
return 0;
}

You are required to use prime seive optimised code only to solve your question…
You can refer to this function of building prime seive as,

void sieves(long long int p[1000000],long long int N)
{
p[1]=p[0]=0;
p[2]=1;

//Mark All Odds as 1
for(long long int i=3;i<N;i+=2)
{
	p[i]=1;
}
for(long long int i=3;i<N;i+=2)
{
	if(p[i]==1)
	{
		for(long long int j=i*i;j<N;j=j+2*i)
		{
			p[j]=0;
		}
	}
}

return;
}