Run ID:90869
提交时间:2024-09-17 18:37:41
#include <iostream> #include <cmath> using namespace std; // 判断一个数是否为素数 bool isPrime(int num) { if (num <= 1) return false; if (num == 2) return true; if (num % 2 == 0) return false; for (int i = 3; i <= sqrt(num); i += 2) { if (num % i == 0) return false; } return true; } // 反转一个整数并返回反转后的数字 int reverseNumber(int num) { int reversed = 0; while (num != 0) { int remainder = num % 10; reversed = reversed * 10 + remainder; num /= 10; } return reversed; } // 检查一个数及其反转后的数是否都是素数,并打印出来(如果是绝对素数) void findAbsolutePrimes(int M, int N) { for (int num = M; num <= N; ++num) { if (isPrime(num)) { // 检查原始数是否为素数 int reversedNum = reverseNumber(num); // 反转数字 if (isPrime(reversedNum)) { // 检查反转后的数字是否也为素数 cout << num << " 是绝对素数" << endl; // 如果是,则打印出来 } } } } int main() { int M, N; // M和N是用户输入的起始和结束值,用于定义搜索范围。在实际应用中,应该添加代码来获取这些值。为了示例简单起见,这里假设M和N已经定义好。例如,可以设置M=10, N=100来测试程序。在实际应用中,应该通过用户输入或其他方式获取这些值。然后调用findAbsolutePrimes函数来查找并打印出在这个范围内的所有绝对素数。最后,程序可以结束运行。注意:这个示例代码没有包含用户输入部分,也没有错误处理机制。在实际应用中,应该添加适当的用户输入和错误处理代码。例如,可以使用cin语句来获取用户输入的M和N值,并添加检查以确保输入的值是合理的(例如,确保N大于或等于M)。此外,还可以添加一些优化措施来提高程序的效率,比如使用更高效的素数检查算法或避免不必要的数字反转操作等。不过,这些扩展已经超出了原始问题的范围。对于初学者来说,首先理解基本的概念和实现一个简单的版本是非常重要的。随着经验的积累和对算法的理解加深,可以逐步优化和完善这个程序。