zoukankan      html  css  js  c++  java
  • BNU E. 比比谁更虎

    E. 比比谁更虎

    1000ms
    1000ms
    65535KB
     
    64-bit integer IO format: %lld      Java class name: Main
    Font Size:

    beap~高,beap~帅,beap~富,beap~无烦恼。

    一直以来beap都是个霸气侧漏的人,所以他经常和别人比做题的速度,据说下面这个问题,他仅仅用了1分30秒便秒杀了。你能比身为“秒神”的他更虎吗?

    问题如下:
    求L到R之间的素数的个数(包括L,R),
    其中0 < L,R < 10^9,但R-L的值不会超过10^6 。

     

    Input

    处理到文件末尾,每组输入只有一行,包括两个数L,R 。

     

    Output

    每组测试数据的输出只有一个整数,表示素数个数。

     

    Sample Input

    1 5
    5 10

     

    Sample Output

    3
    2

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    int vit[32000];
    int num[10000];
    bool flag[1000006];
    int L,R,len;
    int main()
    {
        int i,j;
        memset(vit,0,sizeof(vit));
        vit[1]=0;
        vit[2]=1;
        for(i=3; i<=32000; i++)
        {
            if(i%2)
                vit[i]=1;
            else
                vit[i]=0;
        }
        for(i=3; i<=32000; i+=2)
        {
            if(vit[i])
            {
                for(j=i*2; j<=32000; j+=i)
                    vit[j]=0;
            }
        }
        int cat=0;
        for(i=2; i<=32000; i++)
        {
            if(vit[i])
            {
                num[cat++]=i;
            }
        }
        while(~scanf("%d%d",&L,&R))
        {
            if(R<L) swap(R,L);
            memset(flag,false,sizeof(flag));
            for(int i=0; i<cat && i<=R; i++)
            {
                int dd=L/num[i];
                int ss=num[i]*dd;
                if(ss<L)
                    dd++;
                if(dd==1)
                    dd++;
                for(int j=dd; j*num[i]<=R; j++)
                {
                    flag[j*num[i]-L]=true;
                }
            }
            int cnt=0;
            for(int i=0; i<R-L+1; i++)
            {
                if(!flag[i])
                    cnt++;
            }
            if(L<=1)
                cnt--;
            printf("%d ",cnt);
        }
        return 0;
    }

  • 相关阅读:
    树的直径 poj 2631
    hdu 3954 Level up(线段树)
    [Java Web]Struts2解决中文乱码问题
    怎样为virtualbox添加新的分辨率
    本人的cocos2d-x之路
    php 中利用json_encode和json_decode传递包括特殊字符的数据
    【设计模式】—— 创建者模式Builder
    【设计模式】——工厂方法FactoryMethod
    【Apache开源软件基金会项目】
    【设计模式】——抽象工厂Abstract Factory
  • 原文地址:https://www.cnblogs.com/lxm940130740/p/3360216.html
Copyright © 2011-2022 走看看