HDU1431:素数回文
2013-04-16 15:10
176 查看
Problem Description
xiaoou33对既是素数又是回文的数特别感兴趣。比如说151既是素数又是个回文。现在xiaoou333想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数。(5 <= a < b <= 100,000,000);
Input
这里有许多组数据,每组包括两组数据a跟b。
Output
对每一组数据,按从小到大输出a,b之间所有满足条件的素数回文数(包括a跟b)每组数据之后空一行。
Sample Input
Sample Output
说实话,不得不惊叹于别人的思想
由于int型占四个字节
为了不占空间,定义数组为bool型来处理
xiaoou33对既是素数又是回文的数特别感兴趣。比如说151既是素数又是个回文。现在xiaoou333想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数。(5 <= a < b <= 100,000,000);
Input
这里有许多组数据,每组包括两组数据a跟b。
Output
对每一组数据,按从小到大输出a,b之间所有满足条件的素数回文数(包括a跟b)每组数据之后空一行。
Sample Input
5 500
Sample Output
5 7 11 101 131 151 181 191 313 353 373 383
说实话,不得不惊叹于别人的思想
由于int型占四个字节
为了不占空间,定义数组为bool型来处理
#include <stdio.h> #include <stdio.h> using namespace std; bool a[9989900]; int prime[1005]; void set() { int i,j; for(i = 2; i<=9989899; i+=2) a[i] = true; for(i = 3; i<=3161; i++) { if(a[i]) continue; for(j = i+i; j<=9989899; j+=i) a[j] = true; } } int huiwen(int n) { int a = 0,b = n; while(b) { int r = b%10; a = a*10+r; b/=10; } if(a == n) return 1; return 0; } int main() { int n,m,i,k = 2; set(); prime[0] = 5; prime[1] = 7; for(i = 11; i<=9989899; i+=2) { if(!a[i] && huiwen(i)) prime[k++] = i; } while(~scanf("%d%d",&n,&m)) { for(i = 0; i<k; i++) { if(prime[i]<n) continue; else if(prime[i]>m) break; else printf("%d\n",prime[i]); } printf("\n"); } return 0; }
相关文章推荐
- 素数回文(hdu1431)
- 素数回文(hdu1431)
- HDU1431 素数回文 【暴力】
- 素数回文(hdu1431)
- hdu1431 素数回文(素数筛/埃拉托斯特尼筛法)
- HDU1431 素数回文
- HDU1431 素数回文 (模拟))
- 1000以内的所有回文素数
- HDU 1431 素数回文
- 杭电 1431 素数回文
- 第11周项目6-回文、素数 素数
- 第11周项目六 回文~素数(4)
- 第十一周项目6-回文、素数(输出10000以内的可逆素数)
- 第11周项目6-回文、素数(1)
- 第11周项目6回文数、素数(4、输出1000以内所有的素数)
- C++第七次实验-素数和回文
- 第11周项目--bool之の回文数,素数
- 回文素数
- 重拾回文素数
- HDOJ---1431 素数回文[素数筛选+ltoa函数(将长整形转换成字符数组)+打表]