求2到n和谐素数之和的c++代码编写,
时间: 2024-11-20 13:43:44 浏览: 9
在C++中,计算从2到n的所有和谐素数之和需要一些数学知识和对哈希集合的操作。和谐素数是指6的倍数以外的质数。首先,我们需要一个函数来检查是否为质数,然后遍历2到n,找出所有的和谐素数并累加它们。以下是一个简单的示例代码:
```cpp
#include <iostream>
#include <unordered_set>
bool isPrime(int num) {
if (num <= 1) return false;
if (num == 2 || num == 3) return true;
if (num % 2 == 0 || num % 3 == 0) return false;
for (int i = 5; i * i <= num; i += 6) {
if (num % i == 0 || num % (i + 2) == 0)
return false;
}
return true;
}
unsigned long long sumHarmoniousPrimes(int n) {
std::unordered_set<int> primes;
unsigned long long sum = 0;
// 加入前两个质数,因为小于等于6的数中,只有2和3是和谐素数
primes.insert(2);
primes.insert(3);
for (int i = 5; i <= n; i++) {
if (isPrime(i) && i % 6 != 0) { // 只考虑6的倍数以外的数
sum += i;
primes.insert(i); // 将找到的和谐素数加入哈希表
}
}
return sum;
}
int main() {
int n;
std::cout << "Enter the value of n: ";
std::cin >> n;
unsigned long long result = sumHarmoniousPrimes(n);
std::cout << "Sum of harmonious primes from 2 to " << n << " is: " << result << std::endl;
return 0;
}
```
阅读全文