回文质数的思考

今儿,有道回文质数的题,
题目描述
因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。

写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)( 一亿)间的所有回文质数;

思路很简单,但如果想减少复杂度的话,首先判断回文在判断质数,这样可以减少不少时间(这道题时间限制1000ms)
那行,但我最后一个数据疯狂PE(爆了),我顿时眉毛一皱,发现事情并没有那么简单,但由于我水平有限,始终没找到原因(嘤嘤嘤),然后我直接输入5-100000000,判断他们之间的回文质数,果不其然,就在这里时间超限。

程序判断到9989899时停顿了很长时间,那就说明它还在判断后面的数,但都没有回文质数!!!!

好了,为什么呢,

今日份收获

除11以外的所有偶数位的回文数不可能是质数!!!(WTF)
//摘自百度
首先,整个讨论中,要排除一个数,
那就是11,11是最小的回文数,而且还是质数.
除了这个数之外,
如楼上所说,
11的整倍数有一个性质,那就是奇数位上数字之和=偶数位上数字之和.
一个数,如果是偶数长度回文数,那么同一个数x,必然出现在一次奇数位一次偶数位,所以这个偶数长度回文数可以被11整除.
举例来说:
123321符合条件
123321其中1出现在第1和6位,2出现在第2和5位,3出现在第3和4位.
这个数一定能被11整除,123321÷11=11211

所以上面那个题,后面的判断都不需要,偶数位直接跳出就行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值