遥远的素数(c语言子函数表示)

img

#include
long long fact(long long n)
{
    long long i;
    if(n<2) return 0;
    for(i=2;i*i<=n;i++)
    if(n%i==0) return 0;
     return 1;
}
int main()
{
    long long N,m,l,n,k,max,min;
    scanf("%lld",&N);
    for(k=1;k<=N;k++)
    {scanf("%lld %lld",&m,&n);
    for(l=m;m<=n;l++){max=min=fact(l);
   while(fact(l)) {
   if(fact(l)>=max)max=fact(l);
    else if(fact(l)<=min) min=fact(l);}
}
if(max==min)printf("0");
else if(fact(m)!=0||fact(n)!=0)printf("0");
else    printf("%lld\n",max-min);}
    return 0;}

谁能帮我看看啊,怎么运行不了啊?咋办??

修改如下,供参考:

#include<stdio.h>
int fact(int  n)
{
    int i;
    if (n < 4) return n > 1;  //if (n < 2) return 0;
    for (i = 2; i * i <= n; i++)
        if (n % i == 0) return 0;
    return 1;
}
int main()
{
    int  N, m, i, n, k, max = 0, min = 0;
    scanf("%d", &N);
    while (N--)
    {
        scanf("%d %d", &m, &n);
        max = 0; min = 0;
        for (i = m; i <= n; i++) {
            if (fact(i)){
                min = i;
                break;
            }
        }
        if (min == 0) {
            printf("0");
        }
        else {
            for (i = n; i >= m; i--)
            {
                if (fact(i)) {
                    max = i;
                    break;
                }
            }
            printf("%d", max - min);
        } 
        if (N) printf("\n");
    }
    return 0;
}