题目简述: 输入两个正整数 m 和 n(1<=m<=n<=500),求 m 和 n 之间的所有素数的和。素数就是只能被 1 和自身整除的正整数,1 不是素数,2 是素数。要求定义并调用函数 prime(p) 判断 p 是否为素数,当 p 为素数时返回 1,否则返回 0。再定义并调用函数 prime_sum(m, n),该函数返回区间 [m, n] 内所有素数的和。
时间: 2024-02-24 16:54:37 浏览: 76
好的,下面是用 C 语言实现的代码:
```c
#include <stdio.h>
int prime(int p) {
int i;
for (i = 2; i < p; i++) {
if (p % i == 0) { // 如果能被整除,说明不是素数
return 0;
}
}
return 1; // 如果不能被整除,说明是素数
}
int prime_sum(int m, int n) {
int i, sum = 0;
for (i = m; i <= n; i++) {
if (prime(i)) { // 如果是素数,累加到 sum 中
sum += i;
}
}
return sum;
}
int main() {
int m, n, sum;
scanf("%d%d", &m, &n);
sum = prime_sum(m, n);
printf("%d\n", sum);
return 0;
}
```
首先定义了一个判断素数的函数 `prime`,它接受一个整数 `p`,如果 `p` 是素数,返回 1,否则返回 0。
然后定义了一个求素数和的函数 `prime_sum`,它接受两个整数 `m` 和 `n`,计算区间 `[m, n]` 内所有素数的和,并返回这个和。
在主函数中,读入 `m` 和 `n`,调用 `prime_sum` 函数计算素数和,最后输出结果。
注意:这个算法的时间复杂度较高,当区间 `[m, n]` 很大时,运行时间可能会很长。实际应用中,可以使用更高效的素数判断算法和素数筛选算法来优化算法效率。
阅读全文