• NEU OJ 1649 GMZ’s Pretty Number


    先来一次线性素数筛,把1到10000000的素数都筛选出来,然后暴力跑一遍所有可能的值,打个表,查询的时候o(1)效率出解。

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<queue>
    #include<cstring>
    using namespace std;
     
    const long N = 10000000;
    long long prime[N] = {0},num_prime = 0;
    int isNotPrime[N] = {1, 1};
    int R[10000000+10];
    int ans[10000000+10];
    int main()
    {
        memset(R,0,sizeof(R));
        memset(ans,0,sizeof(ans));
        for(long i = 2 ; i < N ; i ++)
        {
            if(! isNotPrime[i])
                prime[num_prime ++]=i;
            //关键处1
            for(long j = 0 ; j < num_prime && i * prime[j] <  N ; j ++)
            {
                isNotPrime[i * prime[j]] = 1;
                if( !(i % prime[j] ) )  //关键处2
                    break;
            }
        }
     
        for(int i=0;i<num_prime;i++)
        {
            for(int j=i+1;j<num_prime;j++)
            {
                if(prime[i]*prime[j]>10000000) break;
                R[prime[i]*prime[j]]=1;
            }
        }
        ans[0]=0;
        for(int i=1;i<=10000000;i++)
        {
            if(R[i]==1) ans[i]=ans[i-1]+1;
            else ans[i]=ans[i-1];
        }
        int LL,RR;
        while(~scanf("%d%d",&LL,&RR))
        {
            printf("%d
    ",ans[RR]-ans[LL-1]);
        }
        return 0;
    }
     
  • 相关阅读:
    关于面试的有意义问题
    Web测试方法总结
    alwayson05-安装sql server
    alwayson03-安装故障转移
    always on
    alwayson02-各个节点加入域
    alwayson01-搭建域环境
    undo log和redo log
    mysql事务隔离级别
    Ajax
  • 原文地址:https://www.cnblogs.com/zufezzt/p/4725348.html
Copyright © 2020-2023  润新知