题目描述
输入正整数N(100<=N<=100000)输出 第一行输出所有的既是回文数又是素数的数,第二行输出这个数各个位数之和。使用C++语言
完整源码
#include <iostream>
#include <vector>
using namespace std;
// 检查是否为素数
bool isPrime(int num) {
if (num < 2) return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) return false;
}
return true;
}
// 检查是否为回文数
bool isPalindrome(int num) {
int reversed = 0, original = num;
while (num > 0) {
reversed = reversed * 10 + num % 10;
num /= 10;
}
return original == reversed;
}
// 计算位数之和
int digitSum(int num) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
int main() {
int N;
cout << "请输入一个正整数N(100<=N<=100000):";
cin >> N;
vector<int> palindromicPrimes;
// 找到所有既是回文数又是素数的数
for (int i = 100; i <= N; i++) {
if (isPalindrome(i) && isPrime(i)) {
palindromicPrimes.push_back(i);
}
}
// 输出结果
cout << "既是回文数又是素数的数:";
for (int num : palindromicPrimes) {
cout << num << " ";
}
cout << endl;
// 输出各个位数之和
cout << "这些数各个位数之和:";
for (int num : palindromicPrimes) {
cout << digitSum(num) << " ";
}
cout << endl;
return 0;
}
程序说明:
- isPrime函数: 用于判断一个数是否是素数。
- isPalindrome函数: 用于判断一个数是否是回文数。
- digitSum函数: 用于计算一个数各个位数之和。
- main函数:
- 从用户输入一个正整数N。
- 遍历从100到N的所有整数,检查每个数是否是回文且是素数,如果是,则将其添加到
palindromicPrimes
向量中。 - 最后输出所有找到的数字及它们的位数和。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END