素数是指一个大于1的自然数,除了1和此整数自身外,不能被其他自然数整除的数。如果一个素数是完美的素数,当且仅当它的每一位数字之和也是一个素数。如29,本身是素数,而且2+9 = 11也是素数,所以它是完美素数。求[1,n]范围内完美素数的个数。使用C++
时间: 2024-02-29 21:52:09 浏览: 72
好的,下面是使用C++实现求[1,n]范围内完美素数的个数的代码:
```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 sum = 0;
while(num > 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
// 计算[1,n]范围内完美素数的个数
int perfect_primes_count(int n) {
int count = 0;
for(int i = 1; i <= n; i++) {
if(is_prime(i) && is_prime(digit_sum(i))) {
count++;
}
}
return count;
}
int main() {
int n;
cout << "请输入一个正整数n:" << endl;
cin >> n;
int count = perfect_primes_count(n);
cout << "[1, " << n << "]范围内完美素数的个数为:" << count << endl;
return 0;
}
```
你可以按照上面的代码,将其保存为一个.cpp文件,然后编译运行即可。
阅读全文