整体思路

  • 这里需要大量使用素数,必须能够想到只求出M到N之间的素数是不够的,因为M到N之间数字的反序有可能是大于M或小于N的数字,例如M=2,N=20,那么19的反序91大于20,所以使用埃拉拖色尼算法计算素数表的时候要让范围尽可能大,根据题目要求,设计为1~100000。

  • 本题也可以尝试不使用阿拉托色尼算法,对M和N之间的每一个数及其反序进行素数判断。

  • 本题的难点是求反序,方法较多,例程中提供两种技巧供参考:

例程

  1. #include<iostream>
  2. #include<cmath>
  3. #include<cstring>
  4. using namespace std;
  5. bool ss[100001]; //素数表
  6. int count; //计数器
  7. void altsn(int N){ //埃拉拖色尼算法
  8. ss[0]=1;
  9. ss[1]=1;
  10. int p=2;
  11. while(p<=sqrt(N))
  12. if(ss[p]) p++;
  13. else{
  14. int times=2;
  15. while(p*times<=N) { ss[p*times]=1; times++;}
  16. p++;
  17. }
  18. }
  19. bool isP(int n){ //素数判断函数
  20. if(!ss[n]) return true;
  21. return false;
  22. }
  23. int rev(int n){ //反序方法1
  24. char s1[10],s2[10];
  25. int len, reverse;
  26. sprintf(s1, "%d", n); //sprintf输出到数组s1
  27. len=strlen(s1); //反序复制到s2
  28. for(int i=0; i<len; i++) s2[len-1-i]=s1[i];
  29. s2[len]='\0'; //将s2补全为字符串
  30. sscanf(s2, "%d", &reverse); //使用sscanf从s2中提取一个int
  31. return reverse;
  32. }
  33. int rev2(int n){ //反序方法2
  34. int weishu=0; //n的位数
  35. int reverse=0;
  36. int t=n;
  37. while(t){ //计算n的位数
  38. weishu++;
  39. t/=10;
  40. }
  41. t=n;
  42. while(t){ //循环计算反序数值reverse
  43. reverse+=(t%10)*pow(10, --weishu);
  44. t/=10;
  45. }
  46. return reverse;
  47. }
  48. int main(){
  49. int M, N;
  50. cin>>M>>N;
  51. altsn(100000);
  52. for(int i=M; i<=N; i++)
  53. if(isP(i) && isP(rev(i))){ //如果i和i的反序都是素数
  54. count++;
  55. if(count==1) //第一次输出只输出数字
  56. printf("%d", i);
  57. else //以后每次先输出逗号,再输出数字
  58. printf(",%d", i);
  59. }
  60. if(!count) printf("No");
  61. return 0;
  62. }

NOI-OJ 1.13 ID:23 区间内的真素数的更多相关文章

  1. Openjudge 1.13-23:区间内的真素数(每日一水)

    总时间限制:  1000ms 内存限制:  65536kB 描述 找出正整数 M 和 N 之间(N 不小于 M)的所有真素数.真素数的定义:如果一个正整数 P 为素数,且其反序也为素数,那么 P 就为 ...

  2. Openjudge 1.13-23:区间内的真素数

    总时间限制:  1000ms 内存限制:  65536kB 描述 找出正整数 M 和 N 之间(N 不小于 M)的所有真素数. 真素数的定义:如果一个正整数 P 为素数,且其反序也为素数,那么 P 就 ...

  3. PKUOJ 区间内的真素数

    http://bailian.openjudge.cn/tm2018/A/ #include <iostream> #include <math.h> #include < ...

  4. SPOJ 3267 D-query(离散化+主席树求区间内不同数的个数)

    DQUERY - D-query #sorting #tree English Vietnamese Given a sequence of n numbers a1, a2, ..., an and ...

  5. RR区间锁 不是唯一索引,即使区间内没值,也锁

    +--------- +---------------------------------------------------------------------------------------- ...

  6. hdu 4630 查询[L,R]区间内任意两个数的最大公约数

    No Pain No Game Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  7. hdu 4638 树状数组 区间内连续区间的个数(尽可能长)

    Group Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  8. P1440 求m区间内的最小值--洛谷luogu

    题目描述 一个含有n项的数列(n<=2000000),求出每一项前的m个数到它这个区间内的最小值.若前面的数不足m项则从第1个数开始,若前面没有数则输出0. 输入输出格式 输入格式: 第一行两个 ...

  9. 【hdu5381】维护区间内所有子区间的gcd之和-线段树

    题意:给定n个数,m个询问,每次询问一个区间内所有连续子区间的gcd的和.n,m<=10^5 题解: 这题和之前比赛的一题很像.我们从小到大枚举r,固定右端点枚举左端点,维护的区间最多只有log ...

随机推荐

  1. python + PyQt5 实现 简易计算器

    忽然想起之前一直想写个简单的计算器,今天就写了一下,界面有些简陋,但是基本功能实现没有问题 以下是源码: # --*-- coding:utf-8 --*-- import sys from PyQt ...

  2. CSS伪元素:before/CSS伪元素:before/:after content 显示Font Awesome字体图标:after content 显示Font Awesome字体图标

    HTML <a href="javascript:volid(0);"><i class="icon-table"></i> ...

  3. vue给不同环境配置不同打包命令

    第1步:安装cross-env 1 npm i --save-dev cross-env 第2步:修改各环境下的参数 在config/目录下添加test.env.js.pre.env.js. 修改pr ...

  4. 通过Docker发布RestAPI遇到的种种问题

    目标:发布一个分词API 问题1:Docker外无法访问API 原因: Docker映射的地址是0.0.0.0:8888端口,而flask启动的时候默认地址是127.0.0.1:5000,需要手动配置 ...

  5. 开放数据接口 API 简介与使用场景、调用方法

    此文章对开放数据接口 API 进行了功能介绍.使用场景介绍以及调用方法的说明,供用户在使用数据接口时参考之用. 在给大家分享的一系列软件开发视频课程中,以及在我们的社区微信群聊天中,都积极地鼓励大家开 ...

  6. kafka原理深入研究 (转 )

    一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...

  7. 控制结构(9): 管道(pipeline)

    // 上一篇:线性化(linearization) // 下一篇:指令序列(opcode) 最近阅读了酷壳上的一篇深度好文:LINUX PID 1 和 SYSTEMD.这篇文章介绍了systemd干掉 ...

  8. Laravel 入口文件解读及生命周期

    这里只贴index.php的代码, 深入了解的请访问    https://laravel-china.org/articles/10421/depth-mining-of-laravel-life- ...

  9. Visual Studio Code常用设置及快捷键

    1. Visual Studio Code常用设置 { // 控制是否显示 minimap(缩略图) "editor.minimap.enabled": false, // 控制折 ...

  10. 【数学建模】MatLab 数据读写方法汇总

    1.读入 txt 文件数据. load xxx.txt A=load(‘xxx.txt’) A=dlmread(‘xxx.txt’) A=importdata(‘xxx.txt’) 例:将身高体重的 ...