题目描述:
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的范围内

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

被折叠的 条评论
为什么被折叠?



