问题:已知一个范围,如何输出该范围内所有的回文素数?
要解决这个问题先要明白两个知识。
一.什么是回文数
回文数就是一个数字,正着读和反着读一模一样,例如,121,34543,11等等(注意,个位数字也是回文数)
明白了什么是回文数,现在要考虑如何判断一个数字是回文数。
我的想法:
1.既然正读反读一样是它的定义,那么,假设输入的数字是number,我利用取余和取整循环着从后向前取出它的每一位,将其按位存入数组,这样就实现了反读。
2.接下来把这些数组里的数字循环着乘上10再加上下一位就可以得出反读后的数sum。
3.判断反读出来的数sum与原数number是否相等。一样的话即为回文数,否则不是。
(我个人觉得回文数更特殊,要少于素数,但是我没有证据。所以我在程序中先判断是不是回文数,在回文数的基础上再判断是不是素数。我认为这样可以提高效率。)
二.什么是素数
素数是指,除了1和自己之外没有任何因数的数。(0和1除外)
现在考虑如何判断一个数是素数。
我的方法极其简单粗暴,就是:已知的一个数number,那么从2开始到number为止,枚举所有的比它小的数看看可不可以整除number。如果可以,说明是number的因数,number即为合数;如果全都不可以,说明number是素数。
(由于我对循环的逻辑不甚了解所以我采用了计数的方法进行素数判断,详情看代码吧)