c语言写 令Pi表示第i个素数 现在给两个正整数M≤N≤104 请输出PM到PN的所有素数
时间: 2024-09-14 10:04:33 浏览: 43
在C语言中,编写程序以找出指定范围内的所有素数,可以通过以下步骤实现:
1. 创建一个函数来检查一个数是否为素数。
2. 创建一个主函数,使用该素数检查函数从2开始逐个检查每个数,直到找到第N个素数。
3. 记录下每次找到素数的位置,并将对应的素数存储起来。
4. 当找到第M个素数后,输出从PM到PN的所有素数。
下面是一个简单的C语言实现示例代码:
```c
#include <stdio.h>
#include <math.h>
// 函数声明
int isPrime(int num);
void printPrimes(int M, int N);
int main() {
int M, N;
// 假设输入的M和N是合法的,且M <= N <= 10000
printf("请输入M和N(M<=N<=10000):");
scanf("%d %d", &M, &N);
printPrimes(M, N);
return 0;
}
// 检查一个数是否为素数的函数
int isPrime(int num) {
if (num <= 1) return 0;
if (num == 2) return 1;
if (num % 2 == 0) return 0;
int i, sqrtNum = (int)sqrt(num) + 1;
for (i = 3; i <= sqrtNum; i += 2) {
if (num % i == 0) return 0;
}
return 1;
}
// 找到第M个到第N个素数并打印的函数
void printPrimes(int M, int N) {
int count = 0;
int num = 2;
int *primes = (int *)malloc(N * sizeof(int));
if (primes == NULL) {
printf("内存分配失败。\n");
return;
}
while (count < N) {
if (isPrime(num)) {
primes[count++] = num;
if (count == M) {
for (int i = M; i <= N; ++i) {
printf("%d ", primes[i - 1]);
}
break;
}
}
num++;
}
free(primes);
}
```
请注意,这段代码假设了输入的M和N是有效的,并且N不超过10000。此外,程序中使用动态内存分配来存储素数列表,因此需要包含`stdlib.h`头文件来使用`malloc`和`free`函数。
阅读全文