素数是指一个大于1的自然数,除了1和此整数自身外,不能被其他自然数整除的数。如果一个素数是完美的素数,当且仅当它的每一位数字之和也是一个素数。如29,本身是素数,而且2+9 = 11也是素数,所以它是完美素数。求[1,n]范围内完美素数的个数。c++
时间: 2024-03-23 17:41:19 浏览: 112
好的,那么这里给出 C++ 的代码实现:
```c++
#include <iostream>
#include <cmath>
using namespace std;
bool is_prime(int num) {
if (num < 2) {
return false;
}
for (int i = 2; i <= sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
int digit_sum(int num) {
int s = 0;
while (num > 0) {
s += num % 10;
num /= 10;
}
return s;
}
int perfect_primes(int n) {
int count = 0;
for (int i = 2; i <= n; i++) {
if (is_prime(i) && is_prime(digit_sum(i))) {
count++;
}
}
return count;
}
int main() {
int n = 100;
cout << perfect_primes(n) << endl; // 输出在[1,100]范围内的完美素数的个数
return 0;
}
```
希望对你有所帮助!
阅读全文