题目描述
如果一个两位数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数,例如13,试编程求出所有两位数中的绝对素数。
给定两个正整数A、B,请求出大于等于A、小于等于B的所有绝对素数
输入
输入1行,包含两个正整数A和B。保证10<A<B<100。(输入数据保证至少有一个输出)
输出
若干行,每行一个绝对素数,从小到大输出。
样例输入 Copy
11 20
样例输出 Copy
11 13 1
代码:
#include<iostream>
using namespace std;
bool P(int num);
bool A(int num);
bool P(int num) {
if(num<=1){
return false;
}
if(num<=3){
return true;
}
if(num%2==0||num%3==0){
return false;
}
for(int i=5;i*i<=num;i+=6){
if(num%i==0||num%(i+2)==0){
return false;
}
}
return true;
}
bool A(int num) {
if(num<10||num>=100){
return false;
}
int r=(num/10)+(num%10)*10;
return P(num)&&P(r);
}
int main(){
int a,b;
cin>>a>>b;
for(int num=a;num<=b;++num){
if(A(num)) {
cout<<num<<endl;
}
}
return 0;
}