本题就是能够直接打表的,推断能否够打表也须要技巧的:

1 推断最大的数值为1000000。百万下面的数打表都是能够的

2 能够线性预处理好。使用素数筛子法是能够接近线性预处理的。

故此能够打表了。

须要熟悉的基本知识点:

1 素数筛子法 - 一两分钟之内写出代码

2 一般素数推断法,由于位数相加之后的数值很小,故此一般素数推断就能够了,假设写个primality test 算法会大材小用了。

3 然后是带点动态规划法的思想把前面的美素数叠加起来,方便查找。

算是基础题目了,也是有人说的水题,我还是喜欢叫基础题吧。

难在于推断好,并运用好这些基础知识。简单优雅地解决,写出代码。


#include <stdio.h>
#include <string.h>const int MAX_N = 1000001;
bool isPrime(int n)
{if (n == 2) return true;for (int r = 2; r * r <= n; r++){if (n % r == 0) return false;}return true;
}bool isMeiPrime(int n)
{int d = 0;while (n){d += n % 10;n /= 10;}return isPrime(d);
}int primeNums[MAX_N];
bool primes[MAX_N];void seive()
{memset(primes, 0, MAX_N * sizeof(bool));for (int i = 2; i < MAX_N; i++){if (!primes[i]){for (int j = i << 1; j < MAX_N; j += i){primes[j] = true;}}}primeNums[0] = 0, primeNums[1] = 0;for (int i = 2; i < MAX_N; i++){if (!primes[i] && isMeiPrime(i)) primeNums[i] = primeNums[i-1] + 1;else primeNums[i] = primeNums[i-1];}
}int main()
{seive();int T, a, b;scanf("%d", &T);for (int t = 1; t <= T; t++){scanf("%d %d", &a, &b);printf("Case #%d: %d\n", t, primeNums[b] - primeNums[a-1]);}return 0;
}

HDU 4548 美素数 素数题解相关推荐

  1. HDU 4548 美素数(打表)

    HDU  4548  美素数(打表)解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88159#problem/H 题目 ...

  2. HDU 4548 美素数

    美素数 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submis ...

  3. 输出100-200之间所有的素数(素数:只能被1和自己本身整除的数)

    输出100-200之间所有的素数 素数:只能被1和自己本身整除的数 <script type="text/javascript">// 1. 输出100-200之间所有 ...

  4. 美素数(HDU 4548)(打表,简化时间复杂度)

    相信大家都喜欢美的东西,让我们一起来看看美素数吧. 问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为"美素数",如29,本身是素数,而且2+9 = 11 ...

  5. 杭电 4548 美素数

    美素数 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submis ...

  6. 【ACM】杭电OJ 4548 美素数(二次打表)

    二次打表,第一次是标记哪些是素数,哪些不是. 第二次是前n个数中   "本身是素数  &&  各个位上的和是素数  " 的个数 TLE: #include < ...

  7. hdu 2098 分拆素数和(一个偶数拆分成两个不同素数和 拆法数量)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2098 分拆素数和 Time Limit: 1000/1000 MS (Java/Others)     ...

  8. HDU 2098 分拆素数和

    Problem Description 把一个偶数拆成两个不同素数的和,有几种拆法呢? Input 输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束. Output 对 ...

  9. [HDU]2098分拆素数和

    http://acm.hdu.edu.cn/showproblem.php?pid=2098 用筛法标记素数,这道题就简单了. 不过有一点需要注意就是,要拆分成不同的素数,这就解释了为什么26这组数据 ...

最新文章

  1. 课题背景 一二三代测序技术
  2. 【PAT乙级】1041 考试座位号 (15 分)
  3. Python3——字典
  4. 掌握神经网络,入门深度学习
  5. 海龟绘图小动物_震惊!被塑料绳勒成两半的海龟
  6. soidworks 生成PCD点云文件
  7. oracle删除资产模块凭证,请教老师,固定资产凭证不小心给删除了,然后在固定资产模块那边说已经存在了,那我要怎么做?...
  8. c++ 将引用赋值给引用_5分钟掌握 Python 对象的引用
  9. python win7 win10_Python如何获取Win7,Win10系统缩放大小
  10. 计算机开题报告中的研究方法,开题报告:经济学写论文用到的五种研究方法
  11. Java—读取指定路径下文件的内容
  12. Ubuntu20安装卸载MySQL8.0
  13. Android MeasureSpec详解
  14. 智能混音插件 – iZotope Neutron Advanced 3.11 win-mac
  15. 一人饮酒醉用计算机版,玩家自制游戏版《一人饮酒醉》,歪唱喊麦笑翻全场
  16. 虚拟主播?这个项目,我能玩一年!
  17. 企业微信(h5页面嵌入企业微信)的分享总结
  18. srand和rand详细讲解
  19. 便携式显示器之手机云本 ----- 手机秒变电脑
  20. 项目开发过程中的管理规范

热门文章

  1. LeetCode 257 二叉树的所有路径
  2. 只有设置了 name 属性的表单元素才能在提交表单时传递它们的值
  3. 第2月第5天 arc invocation getReturnValue
  4. rabbitmq 学习-2-安装
  5. Visual C#常用函数和方法集汇总
  6. 一图梳理企业数据治理的8项举措
  7. python合并两个excel文件_利用Python将多个excel文件合并为一个文件
  8. 那些我当了程序员以后才理解的崩溃瞬间!
  9. ​Redis的各种“坑”,你知道多少?
  10. 线上服务被干爆了,竟然是日志的锅!!