PRIME1 - Prime Generator - SPOJ Solution C++

  Problem Link : PRIME1 


👉 Hint : edit please

 


✅ C++ Solution :

 
#include <bits/stdc++.h>
using namespace std;
#define MAX 100001
#define ll long long int
void prime(ll m,ll n,vector<int>& v)
{
	int arr[n-m+1];

	ll i,j;
	for(i=0;i<n-m+1;i++)
		arr[i]=0;
	for(i=0;v[i]*(double)v[i]<=n;i++)
	{
		int curr=v[i];
		ll base=(m/curr)*curr;
		if(base<m)
			base+=curr;
		for(j=base;j<=n;j+=curr)
			arr[j-m]=1;
		if(base==curr)
			arr[base-m]=0;
	}
	if(m==1)
		arr[0]=1;
	for(i=m;i<=n;i++)
	{
		if(arr[i-m]==0)
			cout<<i<<endl;
	}
}
int main()
{
	int i,j;
	int a[MAX];
	for(i=0;i<MAX;i++)
		a[i]=0;
	for(i=2;i*i<MAX;i++)
	{
		if(a[i]==0)
		{
			for(j=i*i;j<MAX;j+=i)
				a[j]=1;
		}	
	}
	vector<int>v;
	v.push_back(2);
	for(i=3;i<MAX;i+=2)
	{
		if(a[i]==0)
			v.push_back(i);
	}
	int t;
	cin>>t;
	while(t--)
	{
		ll m,n;
		cin>>m>>n;
		prime(m,n,v);
		cout<<endl;
	}
	return 0;
}


 

Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook. 

😇Happy Learning!!