Segemented Sieve

Please do check my implementation of segmented sieve and let me know where i am wrong.

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

#define MAX_LIM 100001

vector<int> primes;

void sieveOfEratosthenes(){
	
	bool PrimeArray[MAX_LIM];
	memset(PrimeArray,true,sizeof(PrimeArray));
	
	PrimeArray[0]=false;
	PrimeArray[1]=false;

	for(int i=2;i*i<MAX_LIM;i++){
		if(PrimeArray[i]==true){
			for(int j=i*i;j<MAX_LIM;j+=i){PrimeArray[j]=false;}
		}
	}
	for(int i=2;i<MAX_LIM;i++){
		if(PrimeArray[i]){primes.push_back(i);}
	}
	
}

void segmentedSieve(int low,int high){
	
	int req=(high-low)+1;
	bool PrimeArray2[req];

	for(int i=0;i<req;i++){
		PrimeArray2[i]=true;
	}
	
	for(int i=0;primes[i]*primes[i]<=high;i++)
	{	
		int curPrime = primes[i];
		int base = floor(low/curPrime)*curPrime;

		if(base<low){base+=curPrime;}

		for(int j= base;j<=high;j+=curPrime){
			PrimeArray2[j-low]=false;			
		}
		if(base==curPrime){PrimeArray2[base-low]=true;}
		
	}
	PrimeArray2[0]=false;
	int count=0;
	for(int i=0;i<req;i++){
		if(PrimeArray2[i]){
			count++;
			cout<<i+low<<endl;
		}
	}
	
}


int main(){
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	int testCases;
	int high1,lows;
	cin>>testCases;

	sieveOfEratosthenes();
	while(testCases--){
		cin>>lows>>high1;
		segmentedSieve(lows,high1);
		cout<<endl;
	}
	
	return 0;
}