如果n和n+2都是素数,我们称其为孪生素数,比如3和5,5和7都是孪生素数。 给你一个区间[a,b],请问期间有多少对孪生素数?
输入第一行是一个整数K(K≤ 10000),表示样例的个数。 以后每行一个样例,为两个整数,a和b,1≤a≤b≤5000000。
输出每行输出一个样例的结果。
样例输入样例输出5 1 3 1 10 1 100 1 1000 1 5000000
0 2 8 35 32463
#include#include #include int s[5000005]={0}; int p[5000005]; int main() { int n; int a,b,o=0,i,j; for(i=2;i<5000005;i++){ if(s[i]==0){ for(j=i+i;j<5000005;j=j+i){ s[j]=1; } } } for(i=5;i<5000005;i++){ if(s[i]==0){ if(s[i-2]==0) o++; } p[i]=o; } p[1]=0; p[2]=0; p[3]=0; p[4]=0; scanf("%d",&n); while(n--){ scanf("%d%d",&a,&b); if(p[a+1]>p[a]){ printf("%dn",p[b]-p[a]-1); } else printf("%dn",p[b]-p[a]); } return 0; }
很经典的打表,多多学习!



