7-5 计算m到n之间所有素数的和。 分数 10 作者 赵静静 单位 浙江工贸职业技术学院 计算m到n之间所有素数的和,其中 2 <= m <=n <=100,C语言
时间: 2024-10-21 14:18:29 浏览: 28
编程求解1到n之间所有素数之和
在C语言中,计算m到n之间的所有素数之和,可以采用埃拉托斯特尼筛法(Sieve of Eratosthenes)。以下是步骤:
1. 定义一个布尔数组isPrime,长度为n+1,初始化为true,表示所有数字都是潜在的素数。
2. 从2开始,如果isPrime[i]为true,则它是素数,将它的倍数i * i到n设置为false,因为大于i的这些数不可能是素数。
3. 遍历isPrime数组,找到所有的素数。对于每个索引i,若isPrime[i]为true,则i是一个素数,并将其添加到结果sum中。
4. 更新sum值,即累加所有素数。
下面是简单的C语言代码示例:
```c
#include <stdio.h>
#define MAX 101
int isPrime[MAX];
void sieveOfEratosthenes(int n) {
for (int i = 2; i * i <= n; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i) {
isPrime[j] = 0;
}
}
}
}
int sumOfPrimes(int m, int n) {
int sum = 0;
isPrime[0] = isPrime[1] = 0;
// 使用sieveOfEratosthenes找出所有小于等于n的素数
sieveOfEratosthenes(n);
// 计算m到n范围内的素数和
for (int i = m; i <= n; i++) {
if (isPrime[i]) {
sum += i;
}
}
return sum;
}
int main() {
int m = 2, n = 100;
int result = sumOfPrimes(m, n);
printf("The sum of prime numbers from %d to %d is: %d\n", m, n, result);
return 0;
}
```
阅读全文