Prime Palindromes

本文介绍了如何解决USACO中的'Prime Palindromes'问题。程序要求在1秒内找出5到100,000,000间的所有素数回文数。通过优化素数判断算法(只检查到平方根),并预先计算100,000内的回文数,再判断其是否为素数,成功解决了时间限制问题。提供了Python和C++两种实现方式,其中C++版本运行时间更短。" 129785178,3100793,C++ Primer 第五版第六章:内联与constexpr函数解析,"['c++', '开发语言', '算法']

题目描述:

The number 151 is a prime palindrome because it is both a prime number and a palindrome (it is the same number when read forward as backward). Write a program that finds all prime palindromes in the range of two supplied numbers a and b (5 <= a < b <= 100,000,000); both a and b are considered to be within the range .

输入输出格式:


SAMPLE INPUT (file pprime.in)

5 500

OUTPUT FORMAT

The list of palindromic primes in numerical order, one per line.

SAMPLE OUTPUT (file pprime.out)

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

题目大意:

写一个程序找出a到b(5 <= a < b <= 100,000,000),即是素数又是回文数的数,比如151即是素数又是回文数。

解题思路:

很容易想到就是暴力破解,代码也很容易写出来,但是,请注意题目要求在1s内跑出来,这其实是难为我了,可以看到下面两段代码,第一段是用python写的,第二段使用c++来写的,第一段我提交后运行,果然结果是超时,第二段运行时间很短,说明优化思路是对的,下面我来讲一下我的优化思路,首先来优化素数判断,这个其实不用怎么说,跑到sqrt(i),速度会好很多,筛选法不推荐,当然有兴趣也可以试试,不过我比较懒,就不写了,然后就是怎么解这道题了,我们可以先可以求出回文数,可以直接把 100,000,000优化到100000的范围内

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值