C++编程求[1,n]范围内完美素数的个数。
时间: 2023-10-27 16:04:40 浏览: 75
完美素数是指既是素数又是完全数的数。完全数是指恰好等于它的所有因子(不包括它本身)之和的数。例如,6 是一个完全数,因为它的因子是 1, 2, 3,而 1+2+3=6;而 7 不是完全数,因为它的因子只有 1 和 7,而 1≠7。
以下是 C++ 代码实现:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
// 判断素数
bool isPrime(int n) {
if (n < 2) {
return false;
}
int sqrtn = sqrt(n);
for (int i = 2; i <= sqrtn; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
// 判断完全数
bool isPerfect(int n) {
int sum = 1;
int sqrtn = sqrt(n);
for (int i = 2; i <= sqrtn; i++) {
if (n % i == 0) {
sum += i;
if (n / i != i) {
sum += n / i;
}
}
}
return sum == n;
}
int main() {
int n;
cin >> n;
int count = 0;
for (int i = 2; i <= n; i++) {
if (isPrime(i) && isPerfect(i)) {
count++;
}
}
cout << count << endl;
return 0;
}
```
首先定义了两个函数,分别用于判断素数和完全数。然后在主函数中输入一个整数 n,从 2 开始遍历到 n,如果当前数是素数且是完全数,则完美素数个数加 1。最后输出完美素数的个数。