What is Wrong in this code??
Giving wrong answer on Test Case 6...
#include<stdio.h>
#include<stdbool.h>
#define x 1000000007
bool a[50001];
int main()
{
int t,i,j,n,no;
long long ans,b[50001],c;
// prime calculate
for(i=2;i*i<=50000;i++)
{
if(!a[i])
{
for(j=i*i;j<=50000;j+=i)
a[j]=1;
}
}
// assigning prime no (as factors) count=1;
for(i=2;i<=50000;i++)
{
if(!a[i])
b[i]=1;
else
b[i]=0;
}
scanf("%d",&t);
while(t--)
{
ans=1;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
if(a[i])
{
// calculating prime factorization of non-prime nos;
no=i;
c=0;
while(no%2==0)
{
c++;
no/=2;
}
b[2]+=c;
for(j=3;j*j<=no;j+=2)
{
c=0;
while(no%j==0)
{
c++;
no/=j;
}
b[j]+=c;
}
if(no>2)
b[no]++;
}
}
for(i=2,ans=1;i<=n;i++)
{
if(!a[i])
ans=((ans%x)*(b[i]+1)%x)%x;
}
printf("%lld\n",ans);
}
return 0;
}