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

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 美素数 在线打表加数状数组

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4548 解题报告:一开始本想先打个素数表,然后每次输入L 跟R 的时候都进行暴力判断,但这题测试数据太多 ...

  3. HDU 4548 美素数

    Description 小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识.  问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为“ ...

  4. HDU 4548(美素数)

    Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Description 小明对数的 ...

  5. hdu 4548 美素数 超级大水题

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

  6. hdu 4548 筛法求素数 打表

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4548 Problem Description 小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题 ...

  7. 数学#素数筛法 HDU 4548&POJ 2689

    找素数本来是很简单的问题,但当数据变大时,用朴素思想来找素数想必是会超时的,所以用素数筛法. 素数筛法 打表伪代码(用prime数组保存区间内的所有素数): void isPrime() vis[]数 ...

  8. HDU 2098 分拆素数和

    HDU 2098 分拆素数和 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768K (Java/Others) [题目描述 ...

  9. HDU 2098 分拆素数和(素数)

    HDU 2098 分拆素数和(素数) http://acm.hdu.edu.cn/showproblem.php?pid=2098 题意: 给你一个偶数,问你这个偶数有多少种方式能由两个不同的素数构成 ...

随机推荐

  1. Code Forces 543A Writing Code

    题目描述 Programmers working on a large project have just received a task to write exactly mm lines of c ...

  2. HDU 4778 Gems Fight! (2013杭州赛区1009题,状态压缩,博弈)

    Gems Fight! Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 327680/327680 K (Java/Others)T ...

  3. Html学习笔记3

    1表格的标题和表头: <table> <caption>成绩单</caption> <tr> <th>姓名</th> <t ...

  4. MySQL编码latin1转utf8

    mysql移植含有中文的数据时,很容易出现乱码问题.很多是在从mysql4.x向mysql5.x移植的时候出现.mysql的缺省字符集是 latin1,在使用mysql4.x的时候,很多人都是用的la ...

  5. 面试笔试-脚本-1:使用shell脚本输出登录次数最多的用户

    原题目: 一个文本类型的文件,里面每行存放一个登陆者的IP(某些行是反复的),写一个shell脚本输出登陆次数最多的用户. 之前刚看到这个题目时,立即没有想到一行直接解决的办法,尽管知道能够先进行排序 ...

  6. lufylegend:动画

    1.动画1 <script type="text/javascript"> var loader,anime,layer; //初始化画布 init(200, &quo ...

  7. ios7下UISearchBar UITextField 光标不出现的问题

    app支持ios7,在UINavBar 里面加入搜索框,结果光标一直出现不了.在overstackflow网站搜索了一下,竟然有人遇到相同的问题.... 解决办法如下: searchBar.tintC ...

  8. C#编程(四十四)----------string和stringbuilder

    System.String类 首先string类是静态的,System.String是最常用的字符串操作类,可以帮助开发者完成绝大部分的字符串操作功能,使用方便. 1.比较字符串 比较字符串是指按照字 ...

  9. 两个Activity之间共享数据、互相访问的另一种方式的实现

    本帖最后由 勇敢的心_ 于 2010-9-29 11:51 编辑 本人从windows编程转过来学习Android开发,一直在想如果两个Activity之间能够像C#或delphi中的Form一样,可 ...

  10. 【C++】拷贝构造函数和赋值符函数

    在C++中,调用拷贝构造函数有三种情况: 1.一个对象作为函数参数,以值传递的方式传入函数体. 2.一个对象作为函数返回值,以值传递的方式从函数返回. 3.一个对象用于给另外一个对象进行初始化(复制初 ...