I can't figure out what's wrong with my code..worked perfect will almost all of my test cases.But it is showing wrong answer repeatedly..anybody help me please
#include"stdio.h"
#include"stdlib.h"
#include"math.h"
int *m,*n,t;
int prime(int n){
if (n <= 3) {
return n > 1;
}
if (n % 2 == 0 || n % 3 == 0) {
return 0;
}
int sq=sqrt(n);
for (long long i = 5; i<sq; i+=6){
if(n%i==0 ||n % (i + 2)==0)
return 0;
}
return 1;
}
void output(int m,int n,int j)
{
int i;
for(i=m;i<=n;++i)
{
if(prime(i)==1)
printf("%d\n",i);
}
if(j!=t-1)
printf("\n");
}
void input(int i)
{
scanf("%d %d",&m[i],&n[i]);
}
int main()
{
int i;
scanf("%d",&t);
m=(int*)malloc(t*sizeof(int));
n=(int*)malloc(t*sizeof(int));
for(i=0;i<t;++i)
input(i);
for(i=0;i<t;++i)
output(m[i],n[i],i);
return 0;
}