题目:
小王对既是素数又是回文的数特别感兴趣。比如说151既是素数又是个回文。现在小王想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数。(5 <= a < b <= 100,000,000);
输入:
输入a和b(5 <= a < b <= 100,000,000)
输出:
按从小到大输出a,b之间所有满足条件的素数回文数
eg:
输入:5 500
输出:
5 7 11 101 131 151 181 191 313 353 373 383
思路:这道题很简单,首先看题,题目需要的是既是素数又是回文的数字,所以要创建两个函数,分别用来判断是否为素数和是否为回文数字,再进入主函数,从键盘输入两个数字,用for循环遍历在这两个数字之间的数字,引入上面已经写过的素数和回文函数,分别判断每个数字是否为素数及回文数字,是则输出数字,不是则进入下一次循环,直到遍历完所有的数字
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
//判断素数
bool prime(int n) {
for(int i=2;i<n;i++){
if(n%i==0)
return false;
}
return true;
}
//判断是否为回文序列
//也可以添加一个与10比较的数字,小于10的也是回文,大于10的要进入循环判断
bool palindrome(int n) {
int x=0;
int m=n;//复制n的值
while(m>0){
x=x*10+m%10;//反向求和
m=m/10;//去掉最后一位
}
if(x==n)
return true;
else
return false;
}
//主函数
int main()
{
int a,b;
cin>>a>>b;
int n=a;
for(int n=a;n<=b;n++){
if(prime(n)&&palindrome(n)){
cout<<n<<endl;
}
}
return 0;
}
我不知道 (︶^︶) 为什么有评论说代码不正确,我的测试结果显示的是正确的,类似的题也比较多,小伙伴们看好题目,不要看错了嗷( ̄y▽, ̄)╭ ,这个代码思路确实很简单,也很好理解,不太好的是,可能消费的时间比较长,内存稍微有点大,如果小伙伴们的代码要求较高的话,就不要参考这个了嗷 (@_@;)