选美素数~~~~~~~(⊙o⊙)
2015-08-18 11:31
239 查看
Description
小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识。 问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为“美素数”,如29,本身是素数,而且2+9 = 11也是素数,所以它是美素数。 给定一个区间,你能计算出这个区间内有多少个美素数吗?
Input
第一行输入一个正整数T,表示总共有T组数据(T <= 10000)。 接下来共T行,每行输入两个整数L,R(1<= L <= R <= 1000000),表示区间的左值和右值。
Output
对于每组数据,先输出Case数,然后输出区间内美素数的个数(包括端点值L,R)。 每组数据占一行,具体输出格式参见样例。
Sample Input
3
1 100
2 2
3 19
Sample Output
Case #1: 14
Case #2: 1
Case #3: 4
思路:
打表。质数的倍数一定是合数,利用这点我们就可以把合数都标记出来
心得:
再get一招,可以这样找素数,简直棒棒的,哈哈,集训太快了,转眼就快结束了。还真有点舍不得就回家了呢,说多了,学到知识更重要,加油加油啦~~~~~~~♪(^∇^*)
小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识。 问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为“美素数”,如29,本身是素数,而且2+9 = 11也是素数,所以它是美素数。 给定一个区间,你能计算出这个区间内有多少个美素数吗?
Input
第一行输入一个正整数T,表示总共有T组数据(T <= 10000)。 接下来共T行,每行输入两个整数L,R(1<= L <= R <= 1000000),表示区间的左值和右值。
Output
对于每组数据,先输出Case数,然后输出区间内美素数的个数(包括端点值L,R)。 每组数据占一行,具体输出格式参见样例。
Sample Input
3
1 100
2 2
3 19
Sample Output
Case #1: 14
Case #2: 1
Case #3: 4
思路:
打表。质数的倍数一定是合数,利用这点我们就可以把合数都标记出来
#include<iostream> #include<cstring> using namespace std; const int M = 1000010; int isprime[M]; int isbuprime_sum[M]; void prime() { memset(isprime, 0, sizeof(isprime)); memset(isbuprime_sum, 0, sizeof(isbuprime_sum)); isprime[0] = 1; isprime[1] = 1; //初始化 for (int i = 2; i < M; i++) { if (isprime[i]) //判断,是合数就直接跳过 continue; for (int j = i+i; j < M; j += i) //先把素数的倍数(就是合数)都标记好 { isprime[j] = 1; } } } int sumsum(int k) { int sum = 0; while (k) { sum += k % 10; //各个位数的和,以便后面判断 k /= 10; } return sum; } int main() { prime(); isbuprime_sum[0] = isbuprime_sum[1] = 0; for (int i = 2; i < M; i++) { if (!isprime[i] && !isprime[sumsum(i)]) //之前素数被标记为0了 isbuprime_sum[i] = isbuprime_sum[i - 1] + 1; //是美素数就计一次数 else isbuprime_sum[i] = isbuprime_sum[i - 1]; //不是美素数,当前计数不变 } int T,ans=1; cin >> T; while (T--) { int R, L; cin >> L >> R; cout << "Case #" << ans++ << ": " << isbuprime_sum[R] - isbuprime_sum[L - 1] << endl; //输出L-1因为包括左右端点 } return 0; }
心得:
再get一招,可以这样找素数,简直棒棒的,哈哈,集训太快了,转眼就快结束了。还真有点舍不得就回家了呢,说多了,学到知识更重要,加油加油啦~~~~~~~♪(^∇^*)
相关文章推荐
- Hartals
- Linux文件系统相关知识整理
- nsight 使用caffe。
- MonoDevelop中文乱码
- Spring mvc 设置自定义首页
- 安装过程中出现PKG_CONFIG_PATH的问题解决方法
- windows 2008 R2 wincache 不稳定
- nginx 配置错误页面
- 关于阶乘的不等式的多种证明方法
- 实习小记-论开源闭源
- 清除缓存
- CocoaPods问题汇总.
- KMP练习——KMP模式匹配 一(串)
- ibatis缓存select字段
- std::map的insert和下标[]访问
- ASP.NET MVC 的开发体验
- 转载自rhino的Java enum的用法详解
- 用UIButton实现页面跳转(AppDelegate +NavigationViewController)
- 剑指offer 39_二叉树的深度
- 用Inno Setup制作安装程序