C语言求1000以内的素数之和
时间: 2024-11-05 16:24:07 浏览: 62
在C语言中,计算1000以内素数之和,可以采用著名的“筛法”算法,即埃拉托斯特尼筛法(Sieve of Eratosthenes)。以下是简单的步骤:
1. 创建一个布尔数组isPrime[1001],初始化所有元素为true,表示从0到1000都是潜在的素数。
2. 遍历从2开始的所有数字(因为0和1不是素数),对于每个素数i:
- 如果isPrime[i]为true,说明i是素数,将它的倍数设置为false,因为它们不可能是素数。
- 遍历i的平方到1000,步长为i,更新相应的isPrime值。
3. 最后遍历整个isPrime数组,把索引为素数的元素位置上的数字加起来,得到的结果就是1000以内的素数之和。
下面是一个简化的C语言代码示例:
```c
#include <stdio.h>
#define LIMIT 1000
int isPrime[LIMIT+1];
int sumOfPrimes = 0;
void sieveOfEratosthenes() {
for (int i = 2; i * i <= LIMIT; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= LIMIT; j += i) {
isPrime[j] = 0;
}
}
}
}
int main() {
// 初始化所有数为素数
for (int i = 2; i <= LIMIT; i++)
isPrime[i] = 1;
sieveOfEratosthenes();
// 计算并打印素数之和
for (int i = 2; i <= LIMIT; i++) {
if (isPrime[i])
sumOfPrimes += i;
}
printf("The sum of prime numbers less than or equal to 1000 is: %d\n", sumOfPrimes);
return 0;
}
```
运行此程序,它会输出1000以内素数之和。
阅读全文