祝你好运
回复 10楼 beyondyf
下午又测试了一下,发现错误是for(i=0;i<j;i++)
if(m>=b[i]&&m<b[i+1])
{
co=a[i];
break;
}
当数据足够大时会发现b[i+1]不存在,那么输出的就是上一次能够存在b[i+1]的数的co
#include<stdio.h> #define L 1000000 char p[L] = {1, 1}; short int q[L] = {0, 0, 0, 1}; int main() { int i, j; for(i = 2; i < L; i++) if(!p[i]) for(j = i + i; j < L; j += i) p[j] = 1; for(i = 4; i < L; i++) q[i] = q[i - 1] + !(p[i] || p[i - 2]); for(scanf("%d", &i); i--; printf("%d\n", q[scanf("%d", &j), j])); return 0; }