C语言 输入一个正整数n,输入[1,n]范围内所有的质数
时间: 2024-09-26 20:13:07 浏览: 35
输入整数n,输出1~n的素数
在C语言中,可以编写一个程序来输入一个正整数n,并打印出该范围内的所有质数。这里使用的是著名的“筛法”之一,埃拉托斯特尼筛(Sieve of Eratosthenes),它的基本思想是从2开始,依次将每个合数的倍数标记掉,剩下的未被标记的就是质数。
下面是实现的一个示例:
```c
#include <stdio.h>
#define MAX 10000 // 可根据需要调整最大值
// 函数用于判断是否为质数
int isPrime(int num) {
if (num <= 1)
return 0;
for (int i = 2; i * i <= num; i++)
if (num % i == 0)
return 0;
return 1;
}
// 主函数,筛选并输出指定范围内的质数
void printPrimesInRange(int n) {
bool prime[MAX+1]; // 初始化数组,所有数都是质数的假象
memset(prime, true, sizeof(prime)); // 全部设为true
// 将小于等于n的每一个质数都记录下来
for (int p = 2; p*p <= n; p++) {
// 如果prime[p]没被修改过,p是一个质数
if (prime[p]) {
// 标记p的倍数为合数
for (int i = p * p; i <= n; i += p)
prime[i] = false;
}
}
// 打印质数
for (int p = 2; p <= n; p++) {
if (prime[p])
printf("%d ", p);
}
printf("\n");
}
int main() {
int n;
printf("请输入一个正整数n: ");
scanf("%d", &n);
printPrimesInRange(n);
return 0;
}
```
阅读全文