#include <bits/stdc++.h>
using namespace std;
int m, n, b[10010], j; // j相当于一个指示数,用来存真素数,存完后则j ++
bool isPrime(int x)
{
// 判断素数
for (int i = 2; i <= sqrt(x); i ++)
if (x % i == 0) return false;
return true; // 这代码好经典啊……
}
bool isxrxPrime(int x)
{
// 将数回文,并求它俩是否都是素数
int a[10], tx = x, i = 0, nx = 0, g = 1;
while (tx)
{
a[i ++] = tx % 10; // 回文这一位加进去~
tx /= 10; // 去掉这一位QwQ
}
while (i)
{
// 生成回文数
tx += g * a[i - 1];
g *= 10;
i --;
}
if (isPrime(x) && isPrime(tx)) return true; // 俩都是素数
return false;
}
int main()
{
cin >> m >> n; // 输入
bool norprime = true; // 是否有真素数
for (int i = m; i <= n; i ++)
{
if (isxrxPrime(i))
{
// FOUNDED!
b[j ++] = i; // 存上ta
norprime = false; // 设为false,找到啦
}
}
if (!norprime)
{
for (int k = 0; k < j - 1; k ++) cout << b[k] << ","; // 输出
cout << b[j - 1] << endl; // 大坑,最后一个数后面没有逗号
}
else cout << "No" << endl; // 没找着真素数
return 0;
}
洛谷-区间内的真素数
猜你喜欢
转载自blog.csdn.net/weixin_52045928/article/details/121449632
今日推荐
周排行