回文质数
来源:互联网 发布:php微信分享接口开发 编辑:程序博客网 时间:2024/06/08 07:33
描述:
因为151既是一个质数又是一个回文数(从左到右和从右到左看是一样的),所以151是回文质数.
写一个程序来找出范围[a,b](1<=a<b<=100,000,000)间的所有回文质数.
输入:
第一行 两个整数:a和b.
输出:
输出一个回文质数的列表,一行一个.
输入样例:
5 500
输出样例:
5711101131151181191313353373383
#include <iostream>#include <math.h>using namespace std;int cnt; //5到100000000之间回文质数的个数int a, b;int H[100000]; //5到100000000之间的回文质数int isprime(int m);void hw12(); //生成1,2位数的回文质数void hw3(); //生成3位数的回文质数void hw5(); //生成5位数的回文质数void hw7(); //生成7位数的回文质数void output(); //输出a到b之间的回文质数int main(){ /* [a,b](5<=a<b<=100,000,000)间的所有回文质数两个整数:a和b.输出一个回文质数的列表,一行一个 */ cin >> a >> b;hw12(); hw3(); hw5(); hw7(); output(); return 0;}int isprime(int m){ int i; for(i = 2; i <= sqrt(m); i ++) { if(! (m % i)) return 0; } return 1;}void hw12(){ H[0] = 2; H[1] = 3; H[2] = 5; H[3] = 7; H[4] = 11; cnt = 5;}void hw3(){ int i; int j; int h; //回文数 i = cnt; for(j = 10; j <= 19; j ++) { h = j * 10 + ((j / 10) % 10); if(isprime(h)) { H[i] = h; i ++; } } for(j = 30; j <= 39; j ++) { h = j * 10 + ((j / 10) % 10); if(isprime(h)) { H[i] = h; i ++; } } for(j = 70; j <= 79; j ++) { h = j * 10 + ((j / 10) % 10); if(isprime(h)) { H[i] = h; i ++; } } for(j = 90; j <= 99; j ++) { h = j * 10 + ((j / 10) % 10); if(isprime(h)) { H[i] = h; i ++; } } cnt = i;}void hw5(){ int i; int j; int h; //回文数 i = cnt; for(j = 100; j <= 199; j ++) { h = j * 100 + ((j / 10) % 10) * 10 + (j / 100) % 10; if(isprime(h)) { H[i] = h; i ++; } } for(j = 300; j <= 399; j ++) { h = j * 100 + ((j / 10) % 10) * 10 + (j / 100) % 10; if(isprime(h)) { H[i] = h; i ++; } } for(j = 700; j <= 799; j ++) { h = j * 100 + ((j / 10) % 10) * 10 + (j / 100) % 10; if(isprime(h)) { H[i] = h; i ++; } } for(j = 900; j <= 999; j ++) { h = j * 100 + ((j / 10) % 10) * 10 + (j / 100) % 10; if(isprime(h)) { H[i] = h; i ++; } } cnt = i;}void hw7(){ int i; int j; int h; //回文数 i = cnt; for(j = 1000; j <= 1999; j ++) { h = j * 1000 + ((j / 10) % 10) * 100 + ((j / 100) % 10) * 10 + (j / 1000) % 10; if(isprime(h)) { H[i] = h; i ++; } } for(j = 3000; j <= 3999; j ++) { h = j * 1000 + ((j / 10) % 10) * 100 + ((j / 100) % 10) * 10 + (j / 1000) % 10; if(isprime(h)) { H[i] = h; i ++; } } for(j = 7000; j <= 7999; j ++) { h = j * 1000 + ((j / 10) % 10) * 100 + ((j / 100) % 10) * 10 + (j / 1000) % 10; if(isprime(h)) { H[i] = h; i ++; } } for(j = 9000; j <= 9999; j ++) { h = j * 1000 + ((j / 10) % 10) * 100 + ((j / 100) % 10) * 10 + (j / 1000) % 10; if(isprime(h)) { H[i] = h; i ++; } } cnt = i;}void output(){ int i, j; int n; for(i = 0; i < cnt; i ++) { if(a <= H[i]) break; } if(b >= H[cnt - 1]) j = cnt; else { for(j = 0; j < cnt; j ++) { if(b == H[j]) { j ++; break; } else if(b < H[j]) break; else ; } } for(n = i; n < j; n ++) { cout << H[n] << endl; }}回文质数要点:1,偶数位的回文质数都能被11整除2,9位数没有质数3,求7位的回文质数可以穷举5位数来求4,3位的,5位的同上5,先举出回文数再判素数根据以上要点,求回文质数会很简单。希望能对大家有帮助!!!
阅读全文
0 0
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数 构造回文数
- 1.5 回文质数
- 【回文质数】搜索
- 查找回文质数
- 第三章垃圾收集器和内存分配策略
- 指针入门
- 简单的netfilter hook函数注册以及内核链表的使用
- 51 nod 1043 幸运号码(数位DP)
- win10VirtualBox没有64位选项
- 回文质数
- hello,word 这是我开通博客的第一天
- 对拍教程-By skyler2003
- foreach的内部实现和泛型代码
- React项目的打包与部署到腾讯云
- 《JavaScript 高级程序设计》 继承有关的总结
- 如何理解inode
- 第二次实验
- 学习反思