素数是指一个大于1的自然数,除了1和此整数自身外,不能被其他自然数整除的数。如果一个素数是完美的素数,当且仅当它的每一位数字之和也是一个素数。如29,本身是素数,而且2+9 = 11也是素数,所以它是完美素数。求[1,n]范围内完美素数的个数。C++
时间: 2023-12-31 12:03:29 浏览: 104
基于C++的求素数
以下是求解[1, n]范围内完美素数的个数的C++代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
// 判断一个数是否为素数
bool isPrime(int num) {
if (num <= 1) 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, count = 0;
cout << "请输入n的值:";
cin >> n;
// 遍历[1, n]范围内的每个数,判断是否为完美素数
for (int num = 2; num <= n; num++) {
if (isPrime(num) && isPrime(digitSum(num))) {
count++;
}
}
cout << "[1, " << n << "]范围内的完美素数个数为:" << count << endl;
return 0;
}
```
这个程序会提示用户输入n的值,然后遍历[1, n]范围内的每个数,判断是否为完美素数。如果一个数既是素数又是各位数字之和的素数,就计数器加1。最后输出完美素数的个数。
阅读全文