输入正整数N(100<=N<=100000)输出 第一行输出所有的既是回文数又是素数的数,第二行输出这个数各个位数之和

题目描述

输入正整数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;
}

程序说明:

  1. isPrime函数: 用于判断一个数是否是素数。
  2. isPalindrome函数: 用于判断一个数是否是回文数。
  3. digitSum函数: 用于计算一个数各个位数之和。
  4. main函数:
    • 从用户输入一个正整数N。
    • 遍历从100到N的所有整数,检查每个数是否是回文且是素数,如果是,则将其添加到palindromicPrimes向量中。
    • 最后输出所有找到的数字及它们的位数和。

 

© 版权声明
THE END
喜欢就支持一下吧
点赞9赞赏 分享