LightOJ 1197 LightOJ 1197(大区间素数筛选)
http://lightoj.com/volume_showproblem.php?problem=1197
题目大意:
就是给你一个区间[a,b]让你求这个区间素数的个数
但a、b的值太大没法直接进行素数筛选(没法开那么大的数组),我们可以将a当做0,将b当做b-a
这样求[a,b]之间就变成了求[0, b - a]之间,这样就可以开数组来筛选
下图是代码式子j = j + prime[i] - a % prime[i]的由来
- #include<stdio.h>
- #include<math.h>
- #include<string.h>
- #include<stdlib.h>
- #include<algorithm>
- using namespace std;
- const int N = 1e5 + ;
- const int INF = 0x3f3f3f3f;
- typedef long long ll;
- int prime[N], f[N], k;
- bool Isprime[N];
- void Prime()
- {
- k = ;
- memset(Isprime, true, sizeof(Isprime));
- Isprime[] = false;
- for(int i = ; i < N ; i++)
- {
- if(Isprime[i])
- {
- prime[k++] = i;
- for(int j = ; i * j < N ; j++)
- Isprime[i * j] = false;
- }
- }
- }//先用素数筛选法筛选出小范围的素数
- int main()
- {
- int t, a, b, p = ;
- scanf("%d", &t);
- Prime();
- while(t--)
- {
- p++;
- memset(f, , sizeof(f));
- int num = ;
- scanf("%d%d", &a, &b);
- int l = b - a;//将a到b转化为从0到b - a
- for(int i = ; i < k && prime[i] * prime[i] <= b ; i++)
- {
- int j = ;
- if(a % prime[i] != )//判断a + j 如果(a + j)% prime[i] != 0,则将a + j筛除
- j = j + prime[i] - a % prime[i];
- if(a + j == prime[i])//如果a + j是素数,则找下一个
- j += prime[i];
- for(; j <= l ; j += prime[i])
- f[j] = ;//从j开始将含prime[i]因子的数标记(即筛除)
- }
- for(int i = ; i <= l ; i++)
- if(!f[i])
- num++;
- if(a == )//如果a从1开始,需要减去一个
- num--;
- printf("Case %d: %d\n", p, num);
- }
- return ;
- }
LightOJ 1197 LightOJ 1197(大区间素数筛选)的更多相关文章
- LightOj 1197 Help Hanzo (区间素数筛选)
题目大意: 给出T个实例,T<=200,给出[a,b]区间,问这个区间里面有多少个素数?(1 ≤ a ≤ b < 231, b - a ≤ 100000) 解题思路: 由于a,b的取值范围 ...
- LightOJ1197 Help Hanzo —— 大区间素数筛选
题目链接:https://vjudge.net/problem/LightOJ-1197 1197 - Help Hanzo PDF (English) Statistics Forum Tim ...
- LightOJ 1197 Help Hanzo(区间素数筛选)
E - Help Hanzo Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Submit ...
- 大区间素数筛选 POJ2689
题意: 给一个区间[L,U],(1<=L< U<=2,147,483,647),U-L<=1000000,求出[L,U]内距离近期和距离最远的素数对. 因为L,U都小于2^32 ...
- 大区间素数筛选(POJ 2689)
/* *POJ 2689 Prime Distance *给出一个区间[L,U],找出区间内容.相邻的距离最近的两个素数和距离最远的两个素数 *1<=L<U<=2147483647 ...
- 2017ACM暑期多校联合训练 - Team 4 1003 HDU 6069 Counting Divisors (区间素数筛选+因子数)
题目链接 Problem Description In mathematics, the function d(n) denotes the number of divisors of positiv ...
- M - Help Hanzo LightOJ - 1197 (大区间素数筛法)
题解:素数区间问题.注意到a和b的范围是1<<31,所以直接暴力打表肯定不可以.如果一个数是合数,他的两个因子要么是两个sqrt(x),要么就分布在sqrt(x)两端,所以我们可以根据sq ...
- poj 2689 Prime Distance(大区间素数)
题目链接:poj 2689 Prime Distance 题意: 给你一个很大的区间(区间差不超过100w),让你找出这个区间的相邻最大和最小的两对素数 题解: 正向去找这个区间的素数会超时,我们考虑 ...
- Prime Count 求大区间素数个数
http://acm.gdufe.edu.cn/Problem/read/id/1333 https://www.zhihu.com/question/29580448/answer/44874605
随机推荐
- Telnet命令相关+DMZ主机+花生壳
Win7如何解决telnet不是内部或外部命令的方案! telnet用法 测试端口号
- 七、配置ssh keys连通github跟ssh-agent
jenkins+github配置完成后,能够实现在提交pull request或者直接push时,能够将提交的代码拉去一份到服务器本地,并自动merge:但是代码拉去下来了,部署环境的时候却需要输入登 ...
- 高斯白噪声(white Gaussian noise,WGN)
本文科普一下高斯白噪声(white Gaussian noise,WGN). 百度百科上解释为“高斯白噪声,幅度分布服从高斯分布,功率谱密度服从均匀分布”,听起来有些晦涩难懂,下面结合例子通俗而详细地 ...
- MVC4中压缩和合并js文件和样式文件
1.在App_Start文件夹中BundleConfig.cs类中添加相应的文件 1.1bundles.Add(new ScriptBundle("~/bundles/adminJs&quo ...
- SpinBlur - 旋转模糊
[SpinBlur - 旋转模糊] Using the Spin Blur effect, you can rotate and blur the image around one or more p ...
- 怎么查这个文件在linux下的哪个目录
因为要装pl/sql所以要查找tnsnames.ora文件..看看怎么查这个文件在linux下的哪个目录 find / -name tnsnames.ora 查到: /opt/app/oracle/p ...
- 5-青蛙的约会(ex_gcd)
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions:122411 Accepted: 25980 Descripti ...
- FineUI学习
1.无限级菜单绑定 using (DataTable dt = SqlPagerHelper.GetTableByCondition(DefaultConnection.ConnectionStrin ...
- XAMPP非本地访问被拒绝解决办法
问题场景: 本机搭建一个apache服务器,正常访问XAMPP目录下的页面. 手机接入同一wifi,以电脑ip方式访问该目录下的页面:提示:Access Denied Access to the re ...
- CentOS7下NFS服务安装及配置
系统环境:CentOS Linux release 7.4.1708 (Core) 3.10.0-693.el7.x86_64 软件版本:nfs-utils-1.3.0-0.48.el7_4.x86_ ...