C语言 利用筛法 求出200以内的素数
时间: 2024-02-22 13:55:44 浏览: 85
第7章 数组-7数组的其他应用——筛法求素数1
可以使用埃氏筛法来求200以内的素数,具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n = 200;
int *prime = (int *)malloc(sizeof(int) * (n + 1));
for (int i = 0; i <= n; i++) {
prime[i] = 1; // 初始化为1,表示都是素数
}
prime[0] = prime[1] = 0; // 0和1不是素数
for (int i = 2; i * i <= n; i++) {
if (prime[i]) { // 如果i是素数
for (int j = i * i; j <= n; j += i) { // 将i的倍数标记为非素数
prime[j] = 0;
}
}
}
printf("2"); // 输出2,因为它是最小的素数
for (int i = 3; i <= n; i += 2) { // 输出所有的奇数素数
if (prime[i]) {
printf(", %d", i);
}
}
free(prime);
return 0;
}
```
输出结果为:
```
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199
```
阅读全文