LightOJ - 1197 素数筛
深夜无事可干啊
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+11;
typedef long long ll;
bitset<maxn> isnprime;
int prime[maxn];
int sai(int n){
isnprime[0]=isnprime[1]=1;
for(int i = 2; i*i <= n; i++){
if(!isnprime[i]){
for(int j = 2*i; j <= n; j+=i){
isnprime[j]=1;
}
}
}
int cnt=0;
for(int i = 1; i <= n; i++) if(!isnprime[i]) prime[cnt++]=i;
return cnt;
}
bitset<maxn> vis;
int main(){
int cntt=sai(maxn-1);
int T,kase=0; scanf("%d",&T);
while(T--){
int a,b; scanf("%d%d",&a,&b);
int cnt=0;
if(b<maxn) for(int i = a; i <= b; i++){
cnt+=1-isnprime[i];
}
else{
for(int i = 0; i <= b-a; i++) vis[i]=0;
for(int i = 0; i < cntt && prime[i]*prime[i]<=b; i++){
ll k = a/prime[i];
if(k*prime[i]<a) k++;//internal
for(ll j = k*prime[i]; j <= b; j+=prime[i]) vis[j-a]=1;
}
for(ll i = a; i <= b; i++) cnt+=1-vis[i-a];
}
printf("Case %d: %d\n",++kase,cnt);
}
return 0;
}
LightOJ - 1197 素数筛的更多相关文章
- LightOj 1197 Help Hanzo 区间素数筛
题意: 给定一个区间a,b,a-b>=100000,1<=a<=b<=231,求出给定a,b区间内的素数的个数 区间素数筛 (a+i-1)/ ii向上取整,当a为 i 的整数倍 ...
- LightOJ 1197 Help Hanzo(区间素数筛选)
E - Help Hanzo Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Submit ...
- Light oj 1197 - Help Hanzo (素数筛技巧)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1197 给你a和b求a到b之间的素数个数. 先在小区间素数筛,大区间就用类似素数筛的想法 ...
- Help Hanzo (LightOJ - 1197) 【简单数论】【筛区间质数】
Help Hanzo (LightOJ - 1197) [简单数论][筛区间质数] 标签: 入门讲座题解 数论 题目描述 Amakusa, the evil spiritual leader has ...
- Help Hanzo (素数筛+区间枚举)
Help Hanzo 题意:求a~b间素数个数(1 ≤ a ≤ b < 231, b - a ≤ 100000). (全题在文末) 题解: a~b枚举必定TLE,普通打表MLE,真是头疼 ...
- 素数筛 poj 2689
素数筛 #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; ...
- BestCoder Round #85 hdu5778 abs(素数筛+暴力)
abs 题意: 问题描述 给定一个数x,求正整数y,使得满足以下条件: 1.y-x的绝对值最小 2.y的质因数分解式中每个质因数均恰好出现2次. 输入描述 第一行输入一个整数T 每组数据有一行,一个整 ...
- poj 3048 Max Factor(素数筛)
这题就是先写个素数筛,存到prime里,之后遍历就好,取余,看是否等于0,如果等于0就更新,感觉自己说的不明白,引用下别人的话吧: 素数打表,找出20000之前的所有素数,存入prime数组,对于每个 ...
- Codeforces Round #257 (Div. 1) C. Jzzhu and Apples (素数筛)
题目链接:http://codeforces.com/problemset/problem/449/C 给你n个数,从1到n.然后从这些数中挑选出不互质的数对最多有多少对. 先是素数筛,显然2的倍数的 ...
随机推荐
- 无返回值的函数如何捕获出错情况(检查errno常量)
在执行这个函数前,先清除errno,函数返回时,检查errno常量. 每次程序调用失败的时候,系统会自动用用错误代码填充errno这个全局变量,这样你只需要读errno这个全局变量就可以获得失败原因了 ...
- Django框架 之 数据库与ORM
浏览目录 数据库的配置 ORM表模型 ORM之增(create,save) ORM之删(delete) ORM之改(update和save) ORM之查(filter,value) 一.数据库的配置 ...
- ef增删改查
[C#]Entity Framework 增删改查和事务操作 1.增加对象 DbEntity db = new DbEntity(); //创建对象实体,注意,这里需要对所有属性进行赋值(除了自动增长 ...
- URL 与 URI
http://localhost:8080/TEST_Servlet/ClientRequest/test?name=wr getRequestURL:http://localhost:8080/TE ...
- openvswitch安装
安装前准备软件包及版本 Gcc pkg-config autoconf automake m4 python2.X 下载OVS软件包 http://openvswitch.org/releases/o ...
- js 清空 input[type=file]的值
js 不能操作 input[type=file]但你可以将这个 input 的 dom 元素删除掉,再新增一个,或者替换掉 $("#UploadFile").replaceWith ...
- Oracle动态执行表不可访问
在scott 用户下,执行查询语句是出现"Oracle动态执行表不可访问" 经查,是因为用户权限不够所致,修改scott用户权限语句如下: grant select on V_$s ...
- 如何彻底删除TFS上的团队项目 For VS 2017
参考 Visual Studio 2017 TFSDeleteProject.exe 位置 X:\Program Files (x86)\Microsoft Visual Studio\2017\En ...
- 【leetcode 138. 复制带随机指针的链表】解题报告
方法一:递归 unordered_map<Node*,Node*> dict; Node* copyRandomList(Node* head) { if (!head) return h ...
- spring框架所有包说明
spring依赖的jar包如下:下面是每个jar包的说明spring.jar 是包含有完整发布模块的单个jar 包.但是不包括mock.jar, aspects.jar, spring-portlet ...