素数回文数

题目描述

Description

小王对既是素数又是回文的数特别感兴趣。比如说151既是素数又是个回文。现在小王想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数。(5 <= a < b <= 100,000,000);

输入描述

Input

输入a和b(5 <= a < b <= 100,000,000)

输出描述

Output

按从小到大输出a,b之间所有满足条件的素数回文数  

样本输入

Input example

5 500

样本输出

Output example

5
7
11
101
131
151
181
191
313
353
373
383

         本来用筛选法建立素数表,再在素数表内判断回文数,但是。。。。,一直runtime error。查了资料,好像是数组太大了,num[100000000]导致内存不足。

        网上还有个提示,10亿内的回文素数最大只到九百多万,据此更改数组大小为1千万,并把数组声明为stastic,或在函数外把数组声明为全局变量,但是。。。。还是runtime error,放弃挣扎。。。

        直接在网上搜答案,发现有个答案是用一般方法,先判断回文数,再判断这个数是否素数,(判断素数方法是判断这个数能否被2~n-1这些数整除)。我想:试试吧。于是,把这段常规代码打出来,再加上先前网上那个提示,进一步优化代码。

        结果accept。(后来分析,主要是得益于先判断回文数,再判断素数这个策略,它大大减少了运行时间,判断一个1千万内的数是否回文数好像最多只需10几步。)

上一篇:C# 删除App.config中的,WinForm 自动添加的runtime


下一篇:boost::leaf::try_handle_some用法的测试程序