求给定范围素数之和的c语言代码
时间: 2024-09-10 10:22:22 浏览: 100
c代码-判断是素数
在C语言中,计算给定范围内的素数之和可以通过多种方式实现。下面给出一种基本的方法,使用经典的“埃拉托斯特尼筛法”(Sieve of Eratosthenes)进行素数筛选,然后累加筛选出的素数。
```c
#include <stdio.h>
#include <string.h>
// 函数声明
void calculatePrimeSum(int lower, int upper, int *sum);
int main() {
int lower, upper;
int sum = 0;
// 输入范围
printf("请输入素数范围的下限和上限(例如:2 100):");
scanf("%d %d", &lower, &upper);
// 计算范围内的素数之和
calculatePrimeSum(lower, upper, &sum);
// 输出结果
printf("给定范围 [%d, %d] 内的素数之和为:%d\n", lower, upper, sum);
return 0;
}
// 函数定义:计算给定范围内的素数之和
void calculatePrimeSum(int lower, int upper, int *sum) {
int isPrime[upper + 1]; // 创建标记数组,索引代表数,值为0或1,表示是否为素数
memset(isPrime, 1, sizeof(isPrime)); // 初始化所有位置为1(默认为素数)
// 筛选素数
for (int i = 2; i * i <= upper; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= upper; j += i) {
isPrime[j] = 0; // 将i的倍数标记为非素数
}
}
}
// 累加素数
*sum = 0; // 初始化sum
for (int i = lower; i <= upper; i++) {
if (isPrime[i]) {
*sum += i; // 累加素数
}
}
}
```
这段代码首先通过`calculatePrimeSum`函数实现素数的筛选和累加,然后在`main`函数中接收用户输入的范围,并调用`calculatePrimeSum`函数进行计算。
阅读全文