View Code of Problem 103

#include<stdio.h>
#include<math.h>
int isSu(int n){
	if(n<2) return 0;
	int i;
	for(i = 2;i <= sqrt(n); i++){
		if(n%i==0) return 0;
	}
	return 1;
}
int main(){
	int i,a,b,x[1000001];
	int sum = 0;
	for(i = 0;i < 1000001; i++){
		if(isSu(i)) sum++;            //计算每个数前面共有多少个素数 
		x[i] = sum;
	}
	while(scanf("%d %d",&a,&b)!=EOF){
		if(x[a]>x[a-1])              //如果第a个数是个素数 
			printf("%d\n",x[b]-x[a]+1);
		else      
			printf("%d\n",x[b]-x[a]);
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 103