回文质数怎么做?yangtuoyu的博客

题目描述

因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。

写一个程序来找出范围 [a,b](5≤a<b≤100,000,000)( 一亿)间的所有回文质数。

输入格式

第 1 行: 二个整数 a 和 b .

输出格式

输出一个回文质数的列表,一行一个。

#include<bits/stdc++.h>
using namespace std;
bool isPalindromes(int n){//判断回文数 
    int a[20];
    int m=1;
    while(n>0){//数字分离 
        a[m]=n%10;
        n=n/10;
        m++;
    } 
    for(int i=1;i<=m/2;i++){//判断左右两边是否相同 
        if(a[i]!=a[m-i]){
            return 0;//不同的话返回0 
        }
    }
    return 1;//否则返回1 
}
bool isPrimes(int n){
    if(n==2){
        return 1;
    }
    for(int i=2;i<=sqrt(n);i++){//判断质数 
        if(n%i==0){
            return 0;
        }
    }
    return 1;
}
int main(){
    int n,m;
    cin>>n>>m;
    if(n==2){//2的话要特殊判断 
        cout<<"2"<<endl;
    }
    if(n%2==0){//偶数的话就加1 
        n++;
    }
    for(int i=n;i<=m;i=i+2){//跳过偶数 
        if(isPalindromes(i)==0){
            continue;
        }
        if(isPrimes(i)==0){
            continue;
        }
        cout<<i<<endl;
    }
}
//玩洛谷的大佬们记得开o2优化哦~~~ 

 

 

posted @ 2021-08-07 15:32  yangtuoyu  阅读(222)  评论(0)    收藏  举报