i m trying 2 find all primes between 2 nos using sieve.
but somehow only 2 is being set as prime, pls help me in finding the problem
#include<stdio.h>//1==t for prime
#include<stdlib.h>
#define MAX_LIMIT 100
char flags[MAX_LIMIT+100];
void set_seive(void)
{
/*setting of flags for prime nos. by sieve of erasthromas upto MAX_LIMIT*/
unsigned long long i,p;
flags[1]='f'; /*1 is not prime*/
flags[2]='t';
for(i=3;i<=MAX_LIMIT;i++)
{
if(i%2==0)
flags[i]='f'; /*not prime bcoz even*/
else
flags[i]=='t';
}
for(p=3;p<=MAX_LIMIT ;p++) //initial
{
if(flags[p]=='f')
continue;
for(i=2;i*p<=MAX_LIMIT;i++)
flags[i*p]='f'; /*2p,3p,4p are not prime*/
}
}
int main()
{
set_seive();
unsigned long long m,n,i;
int t;
scanf("%d",&t);
while(t--)
{
scanf("%llu %llu",&m,&n);
for(i=m;i<=n;i++)
{
if(flags[i]=='t')
printf("%llu\n",i);
}
putchar('\n');
}
system("pause");
return 0;
}
here t is the no. of test cases and m,n are the nos. between which primes r 2 b found