定义函数int prime(int n),判断n是否为素数;在main函数中输入整数m,调用prime函数求大于m的10最小素数之和。用C++来写
时间: 2024-02-24 20:54:46 浏览: 142
好的,以下是实现代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int n) {
if (n <= 1) return false;
int sqrtn = sqrt(n);
for (int i = 2; i <= sqrtn; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int m;
cin >> m;
int sum = 0;
for (int i = m + 1; ; i++) {
if (isPrime(i)) {
sum += i;
if (--m == 0) break;
}
}
cout << sum << endl;
return 0;
}
```
在此代码中,我们定义了一个 isPrime 函数来判断一个数是否为素数。然后在主函数中,我们输入了一个整数 m,然后从 m+1 开始依次判断每个数是否为素数,如果是素数就加入总和 sum 中。由于我们需要求的是大于 m 的 10 个素数之和,因此在每次找到素数时,就将 m 减一,直到 m 减为 0,即找到了 10 个素数。最后输出总和 sum 即可。
需要注意的是,这个算法的时间复杂度是 O(mloglogm),其中 loglogm 是素数的分布密度,一般情况下是比较稀疏的,因此这个算法的时间复杂度是非常优秀的。
阅读全文