区间内的真素数

11:区间内的真素数

找出正整数 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 <iostream>
#include <cstring>
#include <algorithm>
#include <string>
#include <cmath>
using namespace std;
int prime(int);
int main()
{
    int m,n,flag=0,save=0;
    string k;
    cin>>m>>n;
    for(int i=m;i<=n;i++)
    {
        if(prime(i)==1)
        {
            k=to_string(i);  //把i转为字符串
            reverse(k.begin(), k.end());  //反转
            save=stoi(k);  
            if(prime(save)==1)
            {
                if(flag==0)
                {flag++;cout<<i;continue;}
                if(flag==1) cout<<","<<i;
            }
        }
        
    }
    if(flag==0)
        cout<<"No";
    return 0;
}
int prime(int a)
{
    if(a==1) return 1;
    if(a<2) return 0;
    if(a==2) return 1;
    for(int i=2;i<=sqrt(a);i++)
        if(a%i==0) return 0;
    return 1;
}

转换数据类型真的很爽。

 
posted @ 2019-04-13 08:59  tyqEmptySet  阅读(770)  评论(0编辑  收藏  举报
我与春风皆过客,你携秋水揽星河。