#include <stdio.h>
#include <math.h>
int main()
{
    int m,k,i,n=0,a,b;
    int prime;      //以prime的真假来标记是否为素数
    scanf("%d%d",&a,&b);
    for(m=a;m<=b;m=m+2)     //判别m是否为素数,m由a变化到b,增量为2,把偶数先排除掉
 {
    prime=1;   //循环开始时设168kan.5d6d.comprime为真,即先认为m为素数
    k=(int)sqrt(m);          //用k代表根号m的整数部分
    for(i=2;i<=k;i++)        //此循环的作用是将m被2-根号m除,检查是否能整除,如果m有因子,那么对它开方得其根,它的因子一定会小于k,即因子的平方会小于n
    if(m%i==0)             //如果能整除,表示m不是素数
    { 
       prime=0;       //使prime变为假
       break;             //终止执行本循环
    } 
    if(prime)               //如果m为素数
    n=n+1;                //n用来累计输出素数的个数  
 }
    printf("%d\n",n);     // 输出素数个数           
    return 0;
}

ps:上面用a、b来表示范围了,如果a到b的范围很大,用上面的效率就低了,用搜索先判断一下,缩小范围再用上面的(应该是这样的吧,用搜索的我还没做过,呵呵)
不知道上面的行不行,我也是菜鸟,希望多多指教