#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;
}