C语言中求x,y之间的素数个数包括x,y
时间: 2024-10-29 11:25:43 浏览: 5
详解C语言求两个数的最大公约数及最小公倍数的方法
5星 · 资源好评率100%
在C语言中,求两个整数x和y之间(包括x和y)的素数个数,可以利用前面提到的埃拉托斯特尼筛法,结合一个计数器来统计素数。下面是一个简化的版本:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX 10000 // 根据需要调整最大范围,这里假设不超过1万个数
// 判断是否为素数
bool isPrime(int num) {
if (num <= 1)
return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return false;
}
return true;
}
int countPrimesInRange(int x, int y) {
bool isPrimeArray[MAX + 1];
memset(isPrimeArray, true, sizeof(isPrimeArray));
for (int i = 2; i * i <= y; i++) {
if (isPrimeArray[i]) {
for (int j = i * i; j <= y; j += i)
isPrimeArray[j] = false;
}
}
int primeCount = 0;
for (int i = x; i <= y; i++)
if (isPrimeArray[i])
primeCount++;
return primeCount;
}
int main() {
int x, y;
printf("Enter the start and end numbers: ");
scanf("%d %d", &x, &y);
int primeCount = countPrimesInRange(x, y);
printf("The number of primes between %d and %d inclusive is: %d\n", x, y, primeCount);
return 0;
}
```
阅读全文