#include<stdio.h>
#include<math.h>
int a[1000001]
int isprime(int i)
{
int a
for(a=2a<=sqrt(i+1)a++)
if(i%a==0)return 0
return 1
}
main()
{
int i,j,k
a[2]=1
for(i=3i<=1000000i++)
a[i]=a[i-1]+(i%2!=0&&isprime(i)==1)
int min,max,K,l
for(l=0l<Kl++)
{
scanf("%d %d",&min,&max)
printf("%d\n",a[max]-a[min])
}
}
先编写一个判断素数的函数,类型为bool型bool Isprime(int number)
{
for (int i = 2i <numberi++)
if (number mod i != 0)
return false
return true
}
上面的代码还可以继续优化,只是给你提供个思路
然后在主函数里面循环调用这个函数 比如数组num[N] 循环N次,将num[i] 作为参数调用上面的函数,然后看返回值,如果未true 素数的个数+1,就可以了