其他分享
首页 > 其他分享> > 23.区间内的真素数

23.区间内的真素数

作者:互联网

23:区间内的真素数

描述

找出正整数 M 和 N 之间(N 不小于 M)的所有真素数。

真素数的定义:如果一个正整数 P 为素数,且其反序也为素数,那么 P 就为真素数。
例如,11,13 均为真素数,因为11的反序还是为11,13 的反序为 31 也为素数。

输入

输入两个数 M 和 N,空格间隔,1 <= M <= N <= 100000。

输出

按从小到大输出 M 和 N 之间(包括 M 和 N )的真素数,逗号间隔。如果之间没有真素数,则输出 No。

样例输出

10 35

样例输出

11,13,17,31

代码

#include<bits/stdc++.h>
using namespace  std;

bool isprime(int n);
int change(int n); //反序

int main()
{
    int M , N;
    cin >> M >> N;
    int flag=0;
    for(int i=M;i<=N;i++)
    {
        if(isprime(i) && isprime(change(i)))
        {
            if(!flag)
            {
                cout << i;
                flag=1;
            }
            else{
                cout << "," << i;
            }
        }
    }
    if(!flag)
        cout << "No" << endl;
    return 0;
}

bool isprime(int n)
{
    if(n==1)
        return false;
    for(int i=2;i<=sqrt(n);i++)
    {
        if(n%i==0)
            return false;
    }
    return true;
}

int change(int n)
{
    int sum=0;
    int a[7];
    int i=0;
    while(n)
    {
        a[i++]=n%10;
        n/=10;
    }
    int temp=1;
    for(int j=i-1;j>=0;j--)
    {
        while(a[j])
        {
            for(int k=j;k>=0;k--)
            {
                sum+=temp*a[k];
                temp*=10;
            }
            return sum;
        }
    }
}

标签:11,输出,13,23,int,反序,素数,区间
来源: https://www.cnblogs.com/jifenxiaobawang/p/15080014.html