设计一个C语言程序输出所有小于等于n的素数
时间: 2024-09-27 22:17:24 浏览: 34
设计一个C语言程序输出所有小于等于`n`的素数,可以使用“埃拉托斯特尼筛法”(Sieve of Eratosthenes)。这个算法的基本思想是从2开始,将每个素数的倍数标记为合数,直到达到给定的范围。以下是简单的步骤:
```c
#include <stdio.h>
#define MAX_N 1000 // 可以根据需要调整最大值
int is_prime(int num) {
if (num <= 1) return 0;
for (int i = 2; i * i <= num; i++) { // 判断到i*i即可,因为之后的因子都会成对出现
if (num % i == 0) return 0; // 如果能整除,则不是素数
}
return 1; // 否则是素数
}
void print_primes(int n) {
int prime[n+1];
for (int i = 2; i <= n; i++) {
prime[i] = 1; // 初始化所有数字为可能是素数
}
for (int p = 2; p * p <= n; p++) { // 根据埃拉托斯特尼筛法
if (prime[p]) { // 如果p是素数
for (int i = p * p; i <= n; i += p) { // 标记p的所有倍数为合数
prime[i] = 0;
}
}
}
printf("所有小于等于%d的素数有:\n", n);
for (int i = 2; i <= n; i++) {
if (prime[i])
printf("%d ", i);
}
}
int main() {
int n;
printf("请输入一个正整数n:");
scanf("%d", &n);
print_primes(n);
return 0;
}
```
阅读全文