120_区间埃氏筛
来源:互联网 发布:招募淘宝分销商的语句 编辑:程序博客网 时间:2024/05/17 09:45
区间埃氏筛, 求[a,b)之间的素数的个数。 先对[2,sqrt(b)]筛, 用其素数表对[a,b)筛。
其中注意一个问题,大于等于a的i的倍数的求法:(a+i-1)/i*i
//// 121_prime.cpp// changlle//// Created by user on 1/4/16.// Copyright (c) 2016 user. All rights reserved.//#include <iostream>#include <algorithm>#include <math.h>using namespace std;typedef long long ll;const ll inf=200000;bool is_prime[inf];bool is_prime_small[inf];//ll prime[inf];void segment_sieve (ll a, ll b) { fill (is_prime, is_prime+inf, true); fill (is_prime_small, is_prime_small+inf, true); is_prime_small[0]=is_prime_small[1]=false; is_prime[0]=is_prime[1]=false; for (ll i=0; i*i<b;i++){ if (is_prime_small[i]){ for (ll j=2*i; (ll)j*j<b;j+=i) is_prime_small[j]=false; for (ll j=max(2ll, (a+i-1)/i)*i; j<b;j+=i) is_prime[j-a]=false; } } }int main() { ll a=22801763489; ll b=22801787297; segment_sieve(a, b); int p=0; for (ll i=0; i<=b-a;i++) if (is_prime[i]) p++; cout<<p<<endl; return 0;}
0 0
- 120_区间埃氏筛
- poj_4047Garden区间更新_求和
- 动态规划_区间DP
- 区间关系_阿里笔试
- 【模板】线段树_区间最值、区间求和、修改
- 蓝桥杯算法训练_格子操作_线段树_区间和与区间最值
- poj3468线段树_区间数字统计
- POJ-3468(线段树_区间更新)
- 8.4.5(区间选点_简单贪心)
- poj_2777Count Color线段树_区间更新
- hdu_4107Gangster_线段树_区间修改
- 040_区间调度(贪心)
- 第四届_连号区间数
- 区间_纪中1382_dp
- hdu_4046 Panda线段树_点修改_区间求和
- 蓝桥杯_算法训练_区间k大数查询
- hdu_1166_线段树_单点更新_区间求和
- 单点更新+区间求最值与和_线段树
- java正则表达式解析html示例分享
- A good iOS developer is also a good designer
- Swift2.1 枚举转换类型
- Android拨打电话代码
- Scikit-learn Algorithm Cheat Sheet
- 120_区间埃氏筛
- 获取坐标值的各种方法(图解) - 记录
- n2n vpn搭建
- POJ 1751 Highways
- C++函数模板详解
- R语言的数据导入与导出
- 简单的C程序<四>:删除空白行、反转字符串、字符串替换
- 有上下界的网络流
- 判断一个数是否为素数