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

img


#include<stdio.h>
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;}
谁能帮我看看我哪错了,怎么运行不出来啊??

for(l=m;m<=n;l++) 这不成死循环了么?m<=n要么一直成立,要么根本就不成立。应该是l<=n啊。
另外,你不用这么做。最远的素数,就是找到最大和最小的素数
最小的素数,你从m开始找起,每次加1,直到找到第一个素数,就是最小素数
最大的素数,你从n开始找起,每次减1,直到找到第一个素数,就是最大素数
最大素数减去最小素数的结果就是最远素数的距离了啊