• 1246.素数筛选


    Time Limit: 2000 MS         Memory Limit: 65536 K
    Total Submissions: 749 (119 users)         Accepted: 89 (58 users)  
    Description

    请求出区间[A,B]之间的素数的个数。

    Input
    输入有多组数据。
    第一行为正整数T(T<10),表示输入的数据组数。
    第二行到第T+1行,每行2个数字A,B(0<A<=B<2^31,且B-A<2^20)表示区间的范围。 
    Output

    输出T行数字,每行只有一个数字,表示对应的素数的个数。 

    Sample Input

    2
    100 200
    2 1000000 

    Sample Output

    21
    78498

    #include <iostream>
    #include <cstring>
    using namespace std;
    const int N = 46341;
    bool isprime[1048576+10];
    unsigned int prime[5000];
    int Prime()
    {
        int i,j,k=0;
        memset(isprime,1,sizeof(isprime));
        for(i=2;i<=N;i++)
        {
            if(isprime[i])
            {
                prime[k++]=i;
                for(j=2*i;j<=N;j+=i)
                isprime[j]=0;
            }
        }
        return k;
    }
    int main ()
    {
        unsigned int j,t,n,m,ans,i,k,p;
        p=Prime();
        cin>>t;
        while (t--)
        {
            cin>>n>>m;
            if(n<2) n=2;
            ans=m-n+1;
            memset(isprime,1,sizeof(isprime));
            for(i=0;i<p&&prime[i]*2<=m;i++)
            {
                k=n/prime[i];
                if(n%prime[i]) k++;
                if(k==1) k++;
                for(j=k*prime[i];j<=m;j+=prime[i])
                {
                    if(isprime[j-n])
                    {
                        ans--;
                        isprime[j-n]=0;
                    }
                }
            }
            cout<<ans<<endl;
        }
    }
  • 相关阅读:
    Python反射函数
    类之特性
    ThinkPHP框架基础知识一
    smarty变量调节器与函数
    smarty模板及其应用
    php……流程
    php......权限管理
    php......文件上传
    php......注册审核
    php......留言板
  • 原文地址:https://www.cnblogs.com/qijinbiao/p/2534933.html
Copyright © 2020-2023  润新知