【题目链接】
ybt 1411:区间内的真素数 OpenJudge NOI 1.13 23:区间内的真素数
【题目考点】
1. 质数
2. 数字拆分
【解题思路】
设函数判断一个数是否是质数 设函数求一个数字反序后的数字 对一个数字做数字拆分,即可倒序得到一个数字的各数位。再将这些数字从高位到低位组合起来,即可得到原数字反序后的数字。 遍历从m到n的数字,看每个数字及其反序后的数字是否都是质数,如果是,那么这个数是真素数。
【题解代码】
解法1:
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int n)
{
if(n < 2)
return false;
for(int i = 2; i <= sqrt(n); ++i)
if(n % i == 0)
return false;
return true;
}
int rev(int n)
{
int num = 0;
for(int a = n; a > 0; a /= 10)
num = num * 10 + a % 10;
return num;
}
int main()
{
int m, n;
cin >> m >> n;
bool hasShow = false;
for(int i = m; i <= n; ++i)
{
if(isPrime(i) && isPrime(rev(i)))
{
if(hasShow == true)
cout << ',';
else
hasShow = true;
cout << i;
}
}
if(hasShow == false)
cout << "No";
return 0;
}
|