#include<stdio.h>
int prime[1000000],is_prime[1000000];
int isprime(int n)
{
int ans = 0;
int i,j,k;
for (i = 0; i <= n ;i++)
{
is_prime[i] = 1;
}
is_prime[0] = 0,is_prime[1] = 0;
for (i = 2; i <= n; i++)
{
if (is_prime[i] )
{
prime[ans++] = i;
for (j = i+i; j <= n; j+=i)
{
is_prime[j] = 0;
}
}
}
return ans;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",isprime(n));
return 0;
}
这个是2到n之间的素数个数,如果是a到b的之间的素数个数,(偷个懒)就用2到a的素数个数减2到b的素数个数。但是需要判断一下a是否为素数,如果a为素数那么最后结果加一。