用c语言输入一个正整数n,求n以内的素数。输入一个正整数n,求n以内的素数。请使用数组用筛选法实现。
时间: 2024-11-25 10:12:06 浏览: 1
输出n以内的所有素数 c语言:找出N以内的所有素数
在C语言中,我们可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)来找出小于等于给定正整数n的所有素数。这个算法的基本思想是从2开始,把所有的倍数标记掉,然后移动到下一个未被标记的数,直到达到n为止。以下是用数组实现的一个简单示例:
```c
#include <stdio.h>
void sieve_of_eratosthenes(int n, int primes[]) {
// 初始化所有数为素数(0和1除外)
for (int i = 2; i <= n; i++)
primes[i] = 1;
// 把2作为第一个素数并排除其倍数
primes[1] = 0;
for (int p = 2; p * p <= n; p++) {
// 如果primes[p]还未被修改,说明它是素数
if (primes[p]) {
// 将p的倍数标记为非素数
for (int i = p * p; i <= n; i += p)
primes[i] = 0;
}
}
}
int main() {
int n;
printf("Enter a positive integer n: ");
scanf("%d", &n);
// 定义一个足够大的数组存储结果
int size = n + 1;
int primes[size];
sieve_of_eratosthenes(n, primes);
printf("Prime numbers less than or equal to %d are:\n", n);
for (int i = 2; i <= n; i++)
if (primes[i])
printf("%d ", i);
return 0;
}
```
在这个程序中,`primes[]`数组用于记录每个数是否是素数。当你运行这个程序,它会提示你输入一个正整数n,并输出该范围内所有的素数。
阅读全文