I would like to write a program which can find all prime numbers between two numbers in t test cases. But my program had crashed when I run it. Please, could anyone help me?
My code:
   #include <stdio.h>
#include <malloc.h>
#include <math.h>
void print(int a,int b)
{
    int *p,i;
    int x;
    p = (int *) malloc (sizeof(int)*(b-a));
    for(i=0;i<(b-a);i++) p[i]=a+i;
    for(i=0;i<(b-a)/2;i++)
    {
        if(p[i]!=0)
        {
            if(p[i]%i==0) p[i]=0;
        }
    }
    for(i=0;i<=(b-a);i++) if(p[i]!=0) printf("%d ",p[i]);
    free(p);
}
int main(void)
{
    int t,i,m,n;
    scanf("%d",&t);
    for(i=0;i<t;i++)
    {
        scanf("%d %d",&m,&n);
        print(m,n);
    }
    return 0;
}
 
     
    