any optimization.... i m getting TLE
plz help
[code]#include
include
include
using namespace std;
int prime[100000],lim;
int nf[11][1000002];
int index[11]={0};
bool isprime[1000002]={false};
void primegenerator()
{ // using sieve
nf[0][0]=1;
nf[1][0]=2;
nf[1][1]=3;
nf[1][2]=4;
nf[1][3]=5;
index[0]=1;
index[1]=4;
prime[0]=2;
prime[1]=3;
prime[2]=5;
int x=2;
int n=5;
int m;
int i,j;
//int lim=2;
j=3;
bool not_prime=false;
isprime[2]=true;
isprime[3]=true;
isprime[5]=true;
int num,pd;
while(n<1000000)
{
i=0;
n++;
not_prime=false;
m=n;
num=0,pd=0;;
while(i<j && prime[i]*prime[i]<=n)
{
if(m%prime[i]==0)
{
m=m/prime[i];
if(prime[i]!=pd)
{
num++;
pd=prime[i];
}
not_prime= true;
}
else
{
i++;
}
}
if(not_prime & m>1)
{
num++;
nf[num][index[num]]=n;
index[num]++;
}
else if(not_prime)
{
nf[num][index[num]]=n;
index[num]++;
}
if(!not_prime)
{
prime[j]=n;
isprime[n]=true;
nf[1][index[1]]=n;
index[1]++;
//cout << n<< " ";
//lim++;
j++;
}
//x=6-x;
}
lim=j;
}
int main()
{
int t,q,r,n,ans;
scanf("%d",&t);
//t=0;
int i=0,j;
primegenerator();
/*for(j=0;j<100;j++)
{
cout << prime[j] << " ";
}
*/
while(t>0)
{
ans=0;int ans1=1;
int i=0;
int m=n;
int num1=0,num2=1;
scanf("%d%d",&num1,&num2);
scanf("%d",&n);
for(i=0;i<index[n];i++)
{
if(nf[n][i]>=num1 && nf[n][i]<=num2)
//printf("%d ",nf[i]);
ans++;
}
//printf("\n");
printf("%d\n",ans);
t--;
}
return 0;
}
[/code]