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]的由来

  1. #include<stdio.h>
  2. #include<math.h>
  3. #include<string.h>
  4. #include<stdlib.h>
  5. #include<algorithm>
  6.  
  7. using namespace std;
  8.  
  9. const int N = 1e5 + ;
  10. const int INF = 0x3f3f3f3f;
  11. typedef long long ll;
  12.  
  13. int prime[N], f[N], k;
  14. bool Isprime[N];
  15.  
  16. void Prime()
  17. {
  18. k = ;
  19. memset(Isprime, true, sizeof(Isprime));
  20. Isprime[] = false;
  21. for(int i = ; i < N ; i++)
  22. {
  23. if(Isprime[i])
  24. {
  25. prime[k++] = i;
  26. for(int j = ; i * j < N ; j++)
  27. Isprime[i * j] = false;
  28. }
  29. }
  30. }//先用素数筛选法筛选出小范围的素数
  31.  
  32. int main()
  33. {
  34. int t, a, b, p = ;
  35. scanf("%d", &t);
  36. Prime();
  37. while(t--)
  38. {
  39. p++;
  40. memset(f, , sizeof(f));
  41. int num = ;
  42. scanf("%d%d", &a, &b);
  43. int l = b - a;//将a到b转化为从0到b - a
  44. for(int i = ; i < k && prime[i] * prime[i] <= b ; i++)
  45. {
  46. int j = ;
  47. if(a % prime[i] != )//判断a + j 如果(a + j)% prime[i] != 0,则将a + j筛除
  48. j = j + prime[i] - a % prime[i];
  49. if(a + j == prime[i])//如果a + j是素数,则找下一个
  50. j += prime[i];
  51. for(; j <= l ; j += prime[i])
  52. f[j] = ;//从j开始将含prime[i]因子的数标记(即筛除)
  53. }
  54. for(int i = ; i <= l ; i++)
  55. if(!f[i])
  56. num++;
  57. if(a == )//如果a从1开始,需要减去一个
  58. num--;
  59. printf("Case %d: %d\n", p, num);
  60. }
  61. return ;
  62. }

LightOJ 1197 LightOJ 1197(大区间素数筛选)的更多相关文章

  1. LightOj 1197 Help Hanzo (区间素数筛选)

    题目大意: 给出T个实例,T<=200,给出[a,b]区间,问这个区间里面有多少个素数?(1 ≤ a ≤ b < 231, b - a ≤ 100000) 解题思路: 由于a,b的取值范围 ...

  2. LightOJ1197 Help Hanzo —— 大区间素数筛选

    题目链接:https://vjudge.net/problem/LightOJ-1197 1197 - Help Hanzo    PDF (English) Statistics Forum Tim ...

  3. LightOJ 1197 Help Hanzo(区间素数筛选)

    E - Help Hanzo Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit ...

  4. 大区间素数筛选 POJ2689

    题意: 给一个区间[L,U],(1<=L< U<=2,147,483,647),U-L<=1000000,求出[L,U]内距离近期和距离最远的素数对. 因为L,U都小于2^32 ...

  5. 大区间素数筛选(POJ 2689)

    /* *POJ 2689 Prime Distance *给出一个区间[L,U],找出区间内容.相邻的距离最近的两个素数和距离最远的两个素数 *1<=L<U<=2147483647 ...

  6. 2017ACM暑期多校联合训练 - Team 4 1003 HDU 6069 Counting Divisors (区间素数筛选+因子数)

    题目链接 Problem Description In mathematics, the function d(n) denotes the number of divisors of positiv ...

  7. M - Help Hanzo LightOJ - 1197 (大区间素数筛法)

    题解:素数区间问题.注意到a和b的范围是1<<31,所以直接暴力打表肯定不可以.如果一个数是合数,他的两个因子要么是两个sqrt(x),要么就分布在sqrt(x)两端,所以我们可以根据sq ...

  8. poj 2689 Prime Distance(大区间素数)

    题目链接:poj 2689 Prime Distance 题意: 给你一个很大的区间(区间差不超过100w),让你找出这个区间的相邻最大和最小的两对素数 题解: 正向去找这个区间的素数会超时,我们考虑 ...

  9. Prime Count 求大区间素数个数

    http://acm.gdufe.edu.cn/Problem/read/id/1333 https://www.zhihu.com/question/29580448/answer/44874605

随机推荐

  1. Telnet命令相关+DMZ主机+花生壳

    Win7如何解决telnet不是内部或外部命令的方案! telnet用法 测试端口号

  2. 七、配置ssh keys连通github跟ssh-agent

    jenkins+github配置完成后,能够实现在提交pull request或者直接push时,能够将提交的代码拉去一份到服务器本地,并自动merge:但是代码拉去下来了,部署环境的时候却需要输入登 ...

  3. 高斯白噪声(white Gaussian noise,WGN)

    本文科普一下高斯白噪声(white Gaussian noise,WGN). 百度百科上解释为“高斯白噪声,幅度分布服从高斯分布,功率谱密度服从均匀分布”,听起来有些晦涩难懂,下面结合例子通俗而详细地 ...

  4. MVC4中压缩和合并js文件和样式文件

    1.在App_Start文件夹中BundleConfig.cs类中添加相应的文件 1.1bundles.Add(new ScriptBundle("~/bundles/adminJs&quo ...

  5. SpinBlur - 旋转模糊

    [SpinBlur - 旋转模糊] Using the Spin Blur effect, you can rotate and blur the image around one or more p ...

  6. 怎么查这个文件在linux下的哪个目录

    因为要装pl/sql所以要查找tnsnames.ora文件..看看怎么查这个文件在linux下的哪个目录 find / -name tnsnames.ora 查到: /opt/app/oracle/p ...

  7. 5-青蛙的约会(ex_gcd)

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions:122411   Accepted: 25980 Descripti ...

  8. FineUI学习

    1.无限级菜单绑定 using (DataTable dt = SqlPagerHelper.GetTableByCondition(DefaultConnection.ConnectionStrin ...

  9. XAMPP非本地访问被拒绝解决办法

    问题场景: 本机搭建一个apache服务器,正常访问XAMPP目录下的页面. 手机接入同一wifi,以电脑ip方式访问该目录下的页面:提示:Access Denied Access to the re ...

  10. 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_ ...