请用c++代码编写求〔1,n〕范围内完美素数的个数
时间: 2023-10-27 16:04:40 浏览: 99
以下是使用C++编写的求[1,n]范围内完美素数的个数的代码:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int n)
{
if (n <= 1) return false;
if (n == 2) return true;
if (n % 2 == 0) return false;
int m = sqrt(n);
for (int i = 3; i <= m; i += 2)
if (n % i == 0) return false;
return true;
}
int main()
{
int n;
cin >> n;
int count = 0;
for (int i = 2; i <= n; i++)
{
int sum = 1;
for (int j = 2; j <= sqrt(i); j++)
{
if (i % j == 0)
{
sum += j;
if (j != i / j)
sum += i / j;
}
}
if (sum == i && isPrime(i))
count++;
}
cout << count << endl;
return 0;
}
```
该代码使用两个函数,`isPrime`函数用于判断一个数是否为素数,`main`函数用于计算[1,n]范围内完美素数的个数。其中,对于每个数i,先求出其所有因子的和sum,如果sum等于i并且i是素数,则i是完美素数,计数器count加一。最后输出count即可。
阅读全文