区间内的真素数
题目描述
真素数的定义:如果一个正整数P为素数,且其反序也为素数,那么P就为真素数。例如,11,13均为真素数,因为11的反序还是为11,13的反序为31也为素数。
给定两个正整数M和N,找出M和N之间的所有真素数
输入格式
输入两个数M和N,空格间隔,1≤M≤N≤100000。
输出格式
按从小到大输出M和N之间(包括M和N)的真素数,逗号间隔。如果之间没有真素数,则输出No。
输入输出样列
输入样例1:复制
10 35
输出样例1:复制
11,13,17,31
【耗时限制】1000ms 【内存限制】64MB
#include <iostream>
#include <cmath>
using namespace std;
bool isprime(int x)
{
if (x < 2)
return false;
int n = static_cast<int>(sqrt(x));
for (int i = 2; i <= n; i++)
if (x % i == 0)
return false;
return true;
}
int reverse(int x)
{
int r = 0;
while (x)
{
r = r * 10 + x % 10;
x /= 10;
}
return r;
}
int main()
{
int m, n, c = 0;
cin >> m >> n;
for (int i = m; i <= n; i++)
{
if (isprime(i) && isprime(reverse(i)))
{
if (c > 0)
cout << ',';
cout << i;
c++;
}
}
return 0;
}