【回文质数】搜索
2011-12-11 13:01
141 查看
usaco 1.5
写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)( 一亿)间的所有回文质数;
INPUT FORMAT:
(file pprime.in)
第 1 行: 二个整数 a 和 b .
OUTPUT FORMAT:
(file pprime.out)
输出一个回文质数的列表,一行一个。
简单的搜索,但是我还单独讨论了位数为奇数和偶数,也许是想多了。
主要就是生成回文再加上判断素数。
[编辑]描述
因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)( 一亿)间的所有回文质数;
[编辑]格式
PROGRAM NAME: pprimeINPUT FORMAT:
(file pprime.in)
第 1 行: 二个整数 a 和 b .
OUTPUT FORMAT:
(file pprime.out)
输出一个回文质数的列表,一行一个。
简单的搜索,但是我还单独讨论了位数为奇数和偶数,也许是想多了。
主要就是生成回文再加上判断素数。
#include <cstdio> #include <cmath> long a; long b; long l1=0;long l2=0; long num[20]; long l; long pow10(long m) { long tmp = 1; for (long i=1;i<=(m>>1);i++) { tmp *= 10; } if ((m&1)==1) { tmp *= 10; } return tmp; } bool viuu(long m) { for (long i=2;i<=sqrt(m);i++) { if (m%i==0) return false; } return true; } void dfs(long m) { if (m >= (l>>1)+1) { if ((l&1)==1) { long nnum = 0; for (long i=1;i<=(l>>1);i++) { nnum = nnum*10+num[i]; } long tmp = nnum; for (long j=0;j<10;j++) { nnum = tmp*10+j; for (long i=(l>>1);i>0;i--) { nnum = nnum*10 + num[i]; } if (nnum<=b&&nnum>=a) if (viuu(nnum)) { printf("%ld\n",nnum); } } } else { long nnum = 0; for (long i=1;i<=(l>>1);i++) { nnum = nnum*10+num[i]; } for (long i=(l>>1);i>0;i--) { nnum = nnum*10+num[i]; } if (nnum<=b&&nnum>=a) if (viuu(nnum)) { printf("%ld\n",nnum); } } return; } for (long i=0;i<10;i++) { num[m] = i; dfs(m+1); } } int main() { freopen("pprime.in","r",stdin); freopen("pprime.out","w",stdout); scanf("%ld%ld",&a,&b); long tmp = a; while (tmp>0) { l1 ++ ; tmp /= 10; } tmp = b; while (tmp>0) { l2 ++ ; tmp /= 10; } if (l1==1) { if (a<=2) printf("2\n3\n5\n7\n"); else if(a<=3) printf("3\n5\n7\n"); else if(a<=5) printf("5\n7\n"); else if(a<=7) printf("7\n"); l1 = 2; } for (long i=l1;i<=l2;i++) { l = i; for (long j=1;j<=9;j+=2) { num[1] = j; dfs(2); } } return 0; }
相关文章推荐
- 1.5 回文质数
- 回文质数问题(用生成回文数的方法)
- 洛谷P1217 [USACO1.5]回文质数 Prime Palindromes
- USACO1.5 回文质数 Prime Palindromes
- JavaScript趣题:回文质数
- 回文质数
- P1217 [USACO1.5]回文质数 Prime Palindromes
- P1217 [USACO1.5]回文质数 Prime Palindromes
- 东大OJ-5到100000000之间的回文质数
- BZOJ 3085: 反质数加强版SAPGAP (反素数搜索)
- <NOIP> 25 . P1217 [USACO1.5]回文质数 Prime Palindromes
- P1217 [USACO1.5]回文质数 Prime Palindromes(#1 - 6)
- 东大OJ-5到100000000之间的回文质数
- 【题解】洛谷1217 回文质数
- 质数 素数 合数 闰年 回文
- [USACO1.5]回文质数 Prime Palindromes
- 回文质数 USACO
- 东大OJ-5到100000000之间的回文质数
- 如何能让“回文质数”不超时?剪枝算法?回文质数问题答案及注释。
- USACO 回文质数