用筛选法求100以内的素数,筛选法是在2到100中,去除2,3,4,5,6,7,8,9,10的倍数,用c语言加注释
时间: 2023-09-27 18:11:55 浏览: 76
```c
#include <stdio.h>
int main() {
// 初始化标记数组,0表示素数,1表示非素数
int flags[101] = {0};
flags[0] = flags[1] = 1; // 0和1不是素数
// 从2开始筛选
for (int i = 2; i <= 100; i++) {
if (flags[i] == 0) { // 如果i是素数
// 将i的倍数标记为非素数
for (int j = 2 * i; j <= 100; j += i) {
flags[j] = 1;
}
}
}
// 输出结果
for (int i = 2; i <= 100; i++) {
if (flags[i] == 0) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
本程序使用标记数组实现了筛选法求100以内的素数。首先将0和1标记为非素数。然后从2开始遍历到100,如果当前数是素数,则将其倍数标记为非素数。最后输出所有未标记的数,即为100以内的素数。
相关问题
用筛选法求100以内素数
以下是Python代码实现:
```python
# 初始化所有数字为素数
is_prime = [True] * 101
# 0和1不是素数
is_prime[0] = is_prime[1] = False
# 从2开始枚举,筛选出素数
for i in range(2, 101):
# 如果当前数字已经被标记为非素数,则跳过
if not is_prime[i]:
continue
# 枚举当前素数的倍数并标记为非素数
for j in range(i * 2, 101, i):
is_prime[j] = False
# 输出所有素数
for i in range(2, 101):
if is_prime[i]:
print(i, end=' ')
```
输出结果为: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
筛选法求100以内素数
以下是使用筛选法求100以内素数的Python代码:
```python
# 初始化一个100个元素的列表,全部赋值为1
is_prime = [1] * 100
# 1不是素数,将is_prime[0]赋值为0
is_prime[0] = 0
# 筛选法,从2开始到sqrt(100)结束
for i in range(2, int(100 ** 0.5) + 1):
# 如果i是素数
if is_prime[i - 1] == 1:
# 将i的倍数全部标记为合数,从i*i开始标记
for j in range(i * i, 100 + 1, i):
is_prime[j - 1] = 0
# 输出所有素数
for i in range(1, 100 + 1):
if is_prime[i - 1] == 1:
print(i, end=' ')
```
输出结果为: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
阅读全文