数问题一直都是数学中被人津津乐道的问题,而在编程中,质数问题也一直是经常出现的。本题同样是一个质数问题:给定一个正整数n,求出1-n中所有的回文质数并输出,每个回文质数以换行隔开。 输入描述 1行,包含一个数n。 输出描述 若干行,1-n中所有的回文质数。 样例1 输入 20 输出 2 3 5 7 11C++
时间: 2024-04-22 15:26:22 浏览: 153
高中历史之历史百科此人是匈奴王子:被汉武帝器重成为托孤重臣死后与“卫霍”并列素材
这是一个关于回文质数的问题。为了解决这个问题,我们可以先实现两个辅助函数:一个用于判断一个数是否是质数,另一个用于判断一个数是否是回文数。然后我们遍历从1到n的所有数,对每个数进行判断,如果同时是质数和回文数,则输出。
下面是C++的代码实现:
```cpp
#include <iostream>
#include <vector>
using namespace std;
bool isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
bool isPalindrome(int num) {
int temp = num;
int reversedNum = 0;
while (temp != 0) {
int digit = temp % 10;
reversedNum = reversedNum * 10 + digit;
temp /= 10;
}
return reversedNum == num;
}
vector<int> findPalindromePrimes(int n) {
vector<int> result;
for (int i = 1; i <= n; i++) {
if (isPrime(i) && isPalindrome(i)) {
result.push_back(i);
}
}
return result;
}
int main() {
int n;
cin >> n;
vector<int> palindromePrimes = findPalindromePrimes(n);
for (int num : palindromePrimes) {
cout << num << endl;
}
return 0;
}
```
希望对你有帮助!
阅读全文