回文孪生素数对
“回文素数”是指正读和反读都一样的素数,例如 11, 101, 131 等。“孪生素数”指相差为2的两个素数,例如:11与13,17与19。若x是回文素数,x+2是素数,则称(x,x+2)为回文孪生素数对,例如(3,5) , (101,103)。编写一个程序,输入两个正整数 n,k,输出 K个大于等于n的回文孪生素数对。
思路:先判断素数->回文孪生
#include<iostream>
#include<string>
using namespace std;
bool isPrime(int num){
if(num<2)return false;
for(int i=2;i*i<=num;i++){
if(num%i==0)return false;
}
return true;
}
bool isP(int num){
string s=to_string(num);//数值转化为字符串
int left=0,right=s.size()-1;
while(left<right){
if(s[left]!=s[right])return false;
left++;
right--;
}
return true;
}
int main(){
int n,k;
cin>>n>>k;
int count=0;
int x=n;
while(count<k){
if(isP(x)&&isPrime(x)&&isPrime(x+2)){
cout<<"("<<x<<","<<x+2<<")"<<endl;
count++;
}
x++;
}
return 0;
}
思路:先判断素数->回文孪生
#include<iostream>
#include<string>
using namespace std;
bool isPrime(int num){
if(num<2)return false;
for(int i=2;i*i<=num;i++){
if(num%i==0)return false;
}
return true;
}
bool isP(int num){
string s=to_string(num);//数值转化为字符串
int left=0,right=s.size()-1;
while(left<right){
if(s[left]!=s[right])return false;
left++;
right--;
}
return true;
}
int main(){
int n,k;
cin>>n>>k;
int count=0;
int x=n;
while(count<k){
if(isP(x)&&isPrime(x)&&isPrime(x+2)){
cout<<"("<<x<<","<<x+2<<")"<<endl;
count++;
}
x++;
}
return 0;
}
全部评论
相关推荐

腾讯音乐娱乐集团公司福利 285人发布