用c++实现输入一个正整数 n ,求[1, n ]上各位数字均为素数的整数和
时间: 2023-12-03 20:42:46 浏览: 158
以下是使用 C++ 实现输入一个正整数 n ,求[1, n ]上各位数字均为素数的整数和的代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
// 判断一个数是否为素数
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) return false;
}
return true;
}
// 判断一个数的各位数字是否均为素数
bool isAllDigitsPrime(int n) {
while (n > 0) {
if (!isPrime(n % 10)) return false;
n /= 10;
}
return true;
}
int main() {
int n;
cout << "请输入一个正整数 n:";
cin >> n;
int sum = 0;
for (int i = 1; i <= n; i++) {
if (isAllDigitsPrime(i)) sum += i;
}
cout << "[1, " << n << "]上各位数字均为素数的整数和为:" << sum << endl;
return 0;
}
```
代码的思路如下:
1. 首先定义两个函数 `isPrime` 和 `isAllDigitsPrime` ,分别用于判断一个数是否为素数以及判断一个数的各位数字是否均为素数。
2. 在 `main` 函数中,首先输入一个正整数 n ,然后使用循环遍历[1, n ]范围内的所有整数,对于每个整数,判断它的各位数字是否均为素数,如果是,则将该整数加入到求和中。
3. 最后输出结果。
例如,当输入 n 为 100 时,程序的输出结果为:
```
请输入一个正整数 n:100
[1, 100]上各位数字均为素数的整数和为:842
```
阅读全文