C语言求小于m的最大的10个素数
时间: 2024-11-17 15:29:40 浏览: 13
求小于m的最大10个素数.docx
在C语言中,求解小于某个整数m的最大10个素数可以采用埃拉托斯特尼筛法(Sieve of Eratosthenes)。这是一种古老且高效的寻找素数的算法。以下是大致步骤:
1. 创建一个布尔数组isPrime[m+1],初始化所有元素为true,表示从2到m的数都是可能的素数。
2. 遍历数组,对于每个索引i(从2开始),如果isPrime[i]为true,则它是一个素数。将i的所有倍数标记为非素数(isPrime[j*i]=false),因为它们不是素数。
3. 当找到第一个未标记的数(即下一个素数)时,将其添加到结果列表中,并继续查找下一个素数直到找到第10个。
4. 因为我们需要的是前10个素数,所以只需要找到10个连续的素数即可停止。
下面是一个简化的C代码示例:
```c
#include <stdio.h>
#include <stdbool.h>
void sieve_of_eratosthenes(int m, int primes[], int count) {
bool isPrime[m+1];
for (int i = 0; i <= m; i++) {
isPrime[i] = true;
}
isPrime[0] = isPrime[1] = false;
for (int i = 2; i * i <= m; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= m; j += i) {
isPrime[j] = false;
}
}
}
int index = 0;
for (int i = 2; index < count && i <= m; i++) {
if (isPrime[i]) {
primes[index++] = i;
}
}
}
int main() {
int m;
printf("Enter the value of m: ");
scanf("%d", &m);
int primes[10];
sieve_of_eratosthenes(m, primes, 10);
printf("The first 10 prime numbers less than %d are:\n", m);
for (int i = 0; i < 10; i++) {
printf("%d ", primes[i]);
}
printf("\n");
return 0;
}
```
阅读全文