zoukankan      html  css  js  c++  java
  • 区间内素数的个数

    2016.1.26

    试题描述

    给定两个正整数 a 和 b,请你统计区间 [a,b) 内有多少个素数。

    输入
    共一行包含两个正整数 a 和 b,用一个空格分隔开。
    输出
    一个数,表示所给区间内的素数的个数。
    输入示例
    22 37
    输出示例
    其他说明
    数据范围:1≤ a < b ≤ 10^12 , b-a ≤ 10^7 。
    样例说明:有23、 29 和 31 共 3 个素数。

    区间筛嘛~随便筛~就是当年写的代码比较难看ಥ_ಥ

    #include<iostream>
    #include<cmath>
    using namespace std;
    long long a,b;
    int mark[1000005],prime[1000005],e,bl[10000005];
    int main()
    {
        scanf("%lld%lld",&a,&b);
        for(int i=2;i<=1000000;i++)
        {
            if(!mark[i]) 
            {
                prime[++e]=i;
                for(long long j=(long long)i*i;j<=1000000;j+=i)
                {
                    mark[j]=1;
                }
            }
        }
        long long xxx,c;
        for(int i=1;i<=e;i++)
        {
            xxx=(long long)ceil(1.0*a/prime[i]);
            if(xxx==1) xxx++;
            for(long long j=xxx;(c=j*prime[i])<b;j++)
            {
                bl[c-a]=1;
            }
        }
        int ans=0;
        c=b-a;
        for(int i=0;i<c;i++) 
        {
            if(!bl[i]) ans++;//cout<<i+a<<" ";
        }
        if(a==1) ans--;
        printf("%d",ans);
    
    }
    View Code
  • 相关阅读:
    django模型层(二)多表操作
    django模型层(一)单表操作
    模板系统
    HTTP协议web开发知识点
    视图函数
    URL路由系统
    web框架的本质
    MySQL多表查询
    MySQL单标查询
    列表渲染
  • 原文地址:https://www.cnblogs.com/16er/p/5159308.html
Copyright © 2011-2022 走看看