#include
int main()
{
int K,a,b,i,n,is,m;
is=1;
m=0;
scanf("%d",&K);
while(K>0){
K--;
scanf("%d %d",&a,&b);
for(i=a;i<=b;i++){
is=1;
for(n=2;n
if(i%n==0){
is=0;
break;
}
}
if(is==1){
m++;
continue;
}
}
printf("%d\n",m);
}
return 0;
}
筛选法,供参考:
#include<stdio.h>
int num[1000002] = { 1,1,0 };
void Init()
{
int i, j;
for (i = 2; i <= 500000; i++) {
if (num[i] == 0) {
for (j = i + i; j <= 1000000; j += i) {
num[j] = 1;
}
}
}
}
int sum(int a, int b)
{
int i, sum;
for (i = a, sum = 0; i <= b; i++) {
if (num[i] == 0) sum++;
}
return sum;
}
int main() {
int k, a, b, max, min;
Init();
scanf("%d", &k);
while (k--) {
scanf("%d %d", &a, &b);
max = a > b ? a : b;
min = a < b ? a : b;
if (a == 0 && b == 0)
printf("0\n");
else
printf("%d\n", sum(min, max));
}
return 0;
}
for(n=2;n<i;n++){
改为
for(n=2;n*n<=i;n++){ 试试