Help Hanzo(素数筛)
来源:互联网 发布:kernel task 上传数据 编辑:程序博客网 时间:2024/05/24 03:55
题意:本题就是求l~u之间有多少个素数;
分析:因为题数很大,所以不能用正常的素数筛法,只能先筛一部分,在用这些素数再筛出l~u之间的素数。本题和另一道题目很相似(传送门);
另一道题题目链接:http://poj.org/problem?id=2689;
由于不是很难,我就不赘述怎么进行素数筛,详情请见博客:http://blog.csdn.net/qq_27599517/article/details/50858790;
代码如下:
#include <set>#include <map>#include <stack>#include <queue>#include <math.h>#include <vector>#include <utility>#include <string>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include <algorithm>#include <functional>using namespace std;const int N=50005;bool isprime[N*20];long long prime_1[N];long long prime_2[N];long long l,u;int prime_num=0;void prime1(){ memset(isprime,1,sizeof(isprime)); isprime[1]=isprime[0]=false; for(int i=2;i<N;i++){ if(isprime[i]) prime_1[prime_num++]=i; for(int j=0;j<prime_num&&i*prime_1[j]<N;j++){ isprime[i*prime_1[j]]=false; if(!(i*prime_1[j]))break; } }}// 线性筛法int prime_num_2;void prime2(){ long long i,j,b; memset(isprime,1,sizeof(isprime)); for(i=0;i<prime_num;i++){ b=l/prime_1[i]; while(b*prime_1[i]<l||b<=1) b++; for(j=b*prime_1[i];j<=u;j+=prime_1[i]){ if(j>=l){ isprime[j-l]=false; } } if(l==1){ isprime[0]=false; } }}//普通筛法int main(){ prime1(); int t; cin>>t; int m=1; while(t--){ scanf("%lld%lld",&l,&u); prime2(); prime_num_2=0; for(int i=0;i<=u-l;i++){ if(isprime[i]){ prime_num_2++; } } printf("Case %d: %lld\n",m++,prime_num_2); }}
0 0
- Help Hanzo(素数筛)
- Help Hanzo (素数筛+区间枚举)
- LightOJ - 1197 Help Hanzo 素数筛
- Help Hanzo light OJ 1197 “素数筛”
- LightOJ 1197 Help Hanzo(区间素数筛)
- LOJ - 1197 - 《Help Hanzo》【区间素数】
- Help Hanzo 区间的素数的个数
- Help Hanzo(区间求素数) LightOJ
- Help Hanzo
- lightOJ 1197 Help Hanzo 两阶段素数筛选
- LightOJ 1197Help Hanzo (区间素数筛选法)
- lightOJ 1197 Help Hanzo (区间找素数)
- LightOJ 1197 Help Hanzo(区间素数筛选)
- LightOJ 1197 Help Hanzo 求区间内素数的个数
- 【区间筛法】 LightOJ 1197 Help Hanzo
- LightOJ 1197 Help Hanzo
- Help Hanzo LightOJ
- LightOJ 1197 Help Hanzo
- C++实验2-标准体重
- Unity3D中基本GUI控件介绍
- KMS模拟器VLMCSD再次更新
- java常见的几种排序
- 1005 problem F
- Help Hanzo(素数筛)
- 哨兵元素的应用总结
- Greenplum 源码编译安装教程
- Android Adapter深入理解与优化
- 【bzoj2300】[HAOI2011]防线修建 set维护凸壳
- 云龙神ben神方法
- HDOJ 2072 单词数
- 【web必知必会】——图解HTTP
- 仿蘑菇街首页升级版