按照筛法求素数的思想求出100以内的所有素数。每行10个。c语言
时间: 2023-10-29 09:26:51 浏览: 89
好的,以下是C语言代码实现:
```c
#include <stdio.h>
int main() {
int primes[100] = {2}; // 初始化第一个素数为2
int count = 1; // 记录素数的个数
// 从3开始遍历所有奇数,判断是否为素数
for (int i = 3; i <= 100; i += 2) {
int is_prime = 1; // 标记是否为素数
// 遍历已有的素数,判断是否能整除当前数
for (int j = 0; j < count; j++) {
if (i % primes[j] == 0) {
is_prime = 0;
break;
}
}
// 如果是素数,则将其加入素数列表
if (is_prime) {
primes[count++] = i;
// 每行输出10个素数
if (count % 10 == 0) {
printf("%d\n", i);
} else {
printf("%d\t", i);
}
}
}
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
```
注意,这里使用的是筛法求素数的思想,即从2开始遍历所有数,如果一个数为素数,则将其所有的倍数标记为非素数,因为非素数一定可以分解成若干个素数的乘积,而素数不行。这里为了节省空间,只使用了一个数组来记录素数,而没有使用一个布尔数组来记录每个数是否为素数。
阅读全文