一本通1155 回文三位数
【题目描述】
如果一个数从左边读和从右边读都是同一个数,就称为回文数。例如6886就是一个回文数,求出所有的既是回文数又是素数的三位数。
【输入】
(无)
【输出】
所有的既是回文数又是素数的三位数。一个数一行。
【输入样例】
(无)
【输出样例】
(无)
1.之前回文数和素数的题都做过,
现在居然结合起来搞了个回文素数...
行吧,
现在让我们见识一下这道题吧。
2.按规矩分析一下吧,
这个题的特点比较明显了啊,
题目中就能看出来两个特点,
回文数和三位数。
题干中的素数特点也比较明显。
所以这个题有三个关键点,
我们就围绕这三个点来展开程序设计。
3.三位数这个特点嘛...没什么好说的
只有和回文数搭配起来才能爆发出强大的威力,
仔细观察121,232等回文三位数,
就能发现百位数和个位数是一样的,
十位数不用管。
根据前面的经验,
判断素数的最快方法,
就是从二到这个数的平方根向下取整都试一遍,
没有能除尽的,
这个数就是质数了。
把100到999之间的数都判断一遍,
然后输出,
然后这题就算做完了...
4.让我们对着题解看一看吧。
#include<iostream> #include<cmath> using namespace std; bool zhishu(int x);//定义一个叫质数的bool型函数 int main() { int i; for(i=100;i<=999;i++)//枚举三位数 if(zhishu(i)&&(i/100==i%10))//判断质数和回文 cout<<i<<endl; return 0; } bool zhishu(int x)//描述这个叫质数的bool函数 { int i=2; while(i<=floor(sqrt(x))&&(x%i!=0))//判断质数的条件 i++; if(i>floor(sqrt(x))) return true; return false; }
5.今天总结时间又到了哈,
这个题三个点,
判断素数的方法做了好多遍了,
回文数就比较难判断了,
一开始觉得不怎么好做,
想搞一个相反的字符串然后和原字符串比较,
觉得实在太难搞了,肯定不是这样,
然后列了几个回文三位数,发现我是个傻子...
回文三位数的规律只要一写出数来,
简直显而易见。
当做到一个不可能特别难的题,
但你想的方法真的特别难搞得时候,
一定会有简单的,属于这个题的方法。