回文质数
来源:互联网 发布:samba python install 编辑:程序博客网 时间:2024/06/08 20:01
回文质数
时限:1000ms 内存限制:10000K 总时限:3000ms
描述:
因为151既是一个质数又是一个回文数(从左到右和从右到左看是一样的),所以151是回文质数.
写一个程序来找出范围[a,b](5<=a<b<=100,000,000)间的所有回文质数.
输入:
第一行 两个整数:a和b.
输出:
输出一个回文质数的列表,一行一个.
输入样例:
5 500
输出样例:
5711101131151181191313353373383
此题关键是减少循环
1.判断素数时排除偶数,减少一半循环量
2.判断素数循环时,只循环到算数平方根即可,减少大量循环
3 构造回文数,用至多五位数进行构造,不用10000000000
#include<iostream> #include<math.h> using namespace std; int sushu(int n); int huiwen(int m); int a,b; int main() { int i,m; cin>>a>>b; if(a<12) //如果a是小于12的数,无法构造回文数,需要单独讨论,将其中的质数输出 { if(a==1) //这里要把a=1的情况排除,使a=2 a++; for(i=a;i<12&&i<b;i++) //这里注意循环终止条件必须是a同时小于12和b { if(sushu(i)) cout<<i<<endl; } } for(i=10;i<10000;i++) //此后输出构造的回文数 { m=huiwen(i); if(m>=a&&m<=b) //判断构造的回文数是否在a b之间 { if(sushu(m)) //判断回文数是否是素数,如果是,输出 cout<<m<<endl; } } } int huiwen(int m) //构造回文数 { int temp; temp=m/10; while(temp!=0) { m=m*10+temp%10; temp=temp/10; } return m; } int sushu(int n) //判断素数 { int i,j; if(n%2==0&&n!=2) //将偶数排除,可以减少一半循环 return 0; for(i=3;i<=sqrt(n);i=i+2) //临界值到平方根即可,sqrt()表示算术平方根 { if(n%i==0) { return 0; } } return 1; }
阅读全文
0 0
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数
- 回文质数 构造回文数
- 1.5 回文质数
- 【回文质数】搜索
- 查找回文质数
- angular4.0中路由传递参数、获取参数最nice的写法
- jQuery一行中元素的分类选择
- RESTful API 设计指南
- (009) java后台开发之堆和栈的区别
- IDEA下建立Maven项目
- 回文质数
- Android输入事件从读取到分发二:谁在循环监听事件的到来
- logstash将采取kafka的数据到elasticSearch配置
- faster-rcnn 之 RPN网络的结构解析
- echarts模拟从数据库异步加载数据
- 第八周项目二(3) 顺序串算法测试-串内元素的删除
- N-Queens II
- bzoj1005 小明的烦恼
- oracle创建存储过程并调用