c++洛谷1153绝对素数
时间: 2024-04-01 09:28:23 浏览: 86
洛谷1153题目是关于绝对素数的问题。绝对素数是指一个数的各位数字之和以及它本身都是素数的数。题目要求找出给定范围内的所有绝对素数。
解题思路如下:
1. 首先,我们需要判断一个数是否为素数。素数是只能被1和自身整除的数,所以我们可以使用一个循环从2开始判断该数是否能被2到sqrt(n)之间的数整除,如果能整除,则该数不是素数。
2. 接下来,我们需要计算一个数的各位数字之和。可以通过将该数转换为字符串,然后遍历字符串中的每个字符,将字符转换为数字并累加起来。
3. 最后,我们将判断得到的素数和各位数字之和是否都是素数,如果是,则输出该数。
以下是C++代码示例:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int num) {
if (num < 2) {
return false;
}
for (int i = 2; i <= sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
int digitSum(int num) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
int main() {
int n, m;
cin >> n >> m;
for (int i = n; i <= m; i++) {
if (isPrime(i) && isPrime(digitSum(i))) {
cout << i << endl;
}
}
return 0;
}
```
阅读全文