如何使用C++编程计算并求和[2, 50]范围内的所有和谐素数?
时间: 2024-11-17 21:28:55 浏览: 3
程序控制结构编程练习题-安装配置adfs代理服务器
和谐素数是指除了1以外,同时能够整除其倒数的自然数。在C++编程中,我们可以按照以下步骤计算并求和[2, 50]范围内的和谐素数:
1. 定义一个函数检查一个数是否为和谐素数。首先,对于给定的数n,我们需要验证它是否是质数,因为只有质数才能成为和谐素数。可以使用Sieve of Eratosthenes算法来生成一定范围内的质数。
```cpp
#include <vector>
bool isHarmonious(int n) {
std::vector<bool> prime(n + 1, true);
for (int i = 2; i * i <= n; ++i) {
if (prime[i]) {
for (int j = i * i; j <= n; j += i)
prime[j] = false;
}
}
return prime[n] && (isPrime(n) || isDivisibleByOneOverN(n));
}
// 辅助函数,判断n是否能被1/n整除
bool isDivisibleByOneOverN(int n) {
int reciprocal = static_cast<int>(std::ceil(1.0 / n));
return n % reciprocal == 0;
}
```
2. 遍历[2, 50]范围内的每个数,如果它是质数并且满足和谐素数的条件(即能被它的倒数整除),就将其加入到结果总和中。
```cpp
int sumOfHarmoniousPrimes() {
int sum = 0;
for (int i = 2; i <= 50; ++i) {
if (isHarmonious(i))
sum += i;
}
return sum;
}
```
3. 最后,在main函数中调用`sumOfHarmoniousPrimes()`函数并打印结果。
```cpp
int main() {
int result = sumOfHarmoniousPrimes();
std::cout << "The sum of harmonious primes between 2 and 50 is: " << result << std::endl;
return 0;
}
```
阅读全文