如何在C语言中编写程序来计算并返回整数区间[x, y]内的素数个数,包括x和y本身?
时间: 2024-10-29 10:21:21 浏览: 12
统计给定整数M和N区间内素数的个数并对它们求和-C语言代码
在C语言中,要编写一个计算给定整数区间[x, y]内素数个数的程序,你可以采用埃拉托斯特尼筛法(Sieve of Eratosthenes)。这个算法是一种用于查找一定范围内所有质数的经典方法。下面是基本步骤:
1. 创建一个布尔数组isPrime[0..y+1],初始化所有的值为true,除了第一个元素(isPrime[0])设为false,因为1不是质数。
2. 对于每个i从2到√y(取整),如果isPrime[i]为true,说明i是一个质数,将它的倍数都标记为非质数(即isPrime[j*i]设为false,其中j > i)。
3. 遍历整个数组,统计isPrime数组中值为true的位置,这些位置对应的数就是区间[x, y]内的素数。
以下是简单的C代码示例:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX 1000 // 可根据实际需求调整,这里设定一个上限
bool isPrime[MAX + 1];
int countPrimes(int x, int y) {
for (int i = 2; i * i <= y; ++i) {
if (isPrime[i]) {
for (int j = i * i; j <= y; j += i)
isPrime[j] = false;
}
}
int primeCount = 0;
for (int i = x; i <= y; ++i) {
if (isPrime[i])
primeCount++;
}
return primeCount;
}
int main() {
int x, y;
printf("Enter the range (start and end): ");
scanf("%d %d", &x, &y);
printf("Number of primes in the range [%d, %d]: %d\n", x, y, countPrimes(x, y));
return 0;
}
```
阅读全文