请帮忙看一下,我的代码哪出了问题?帮忙纠正一下,谢谢!
题目:
Interprime
题目描述
n是两个连续的奇素数的平均值,且n不是素数,那么我们称这样的数是"内部素数"。求区间[a,b]内"内部素数"的个数。比如,前5个"内部素数"是4,6,9,12,15。
输入
第一行是样例数T(1≤T≤1000)。 每个样例一行,为三个整数a,b(1≤a≤b≤106)。
输出
每行输出一个样例的结果。
样例输入
5
1 10
1 100
1 1000
1 10000
1 100000
样例输出
3
24
166
1228
9591
我想的比较简单
我的代码
#include <stdio.h>
#include <math.h>
#define N 1001000
int x[80000];
int isPrime(int x);
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int a,b;
int cnt=0;
scanf("%d %d",&a,&b);
__int64 i,j,k;//打表的地方应该有问题
j=1;
for(k=3;k<=N;k++)
{
if(isPrime(k)==1)
{
x[j]=k;
j++;
}
} //
j=1;
for(i=a;i<=b;i++)
{
if(isPrime(i)==0)
{
__int64 c=(x[j]+x[j+1])/2;
if(i==c)
{
cnt++;
}
j++;
}
}
printf("%d\n",cnt);
}
return 0;
}
int isPrime(int x)
{
int i,m=sqrt(x);
if(x==1)
return 0;
if(x==2)
return 1;
else{
for(i=2;i<=m;i++){
if(x%i==0)
return 0;
}
return 1;
}
}