用筛选法输出2-100以内的质数
时间: 2023-12-28 11:23:21 浏览: 96
筛选法是一种常见的求解质数的方法,其基本思想是从2开始,将每个质数的倍数都标记成合数,以达到筛选素数的目的。以下是C语言的筛选法实现:
```
#include <stdio.h>
#define N 100
int main()
{
int i, j, is_prime[N+1];
for(i=2; i<=N; i++)
is_prime[i] = 1; // 初始化为1,表示都是质数
for(i=2; i<=N; i++)
{
if(is_prime[i])
{
for(j=i*i; j<=N; j+=i)
is_prime[j] = 0; // 将i的倍数标记为合数
}
}
for(i=2; i<=N; i++)
{
if(is_prime[i])
printf("%d ", i); // 输出质数
}
return 0;
}
```
相关问题
筛选法----孪生素数问题
孪生素数是指两个素数之间的差值为2的素数对。通过筛选法可以找出给定素数范围内的所有孪生素数的组数。
在引用的代码中,使用了递归筛选法来解决孪生素数问题。该程序首先使用循环将素数的倍数标记为非素数,然后再遍历素数数组,找出相邻素数之间差值为2的素数对,并统计总数。
具体实现过程如下:
1. 定义一个数组a[N,用来标记数字是否为素数,其中N为素数范围的上限。
2. 初始化数组a,将0和1标记为非素数。
3. 输入要查询的孪生素数的个数n。
4. 循环n次,每次读入一个要查询的素数范围num。
5. 使用两层循环,外层循环从2遍历到num/2,内层循环从i的平方开始,将素数的倍数标记为非素数。
6. 再次循环遍历素数数组,找出相邻素数之间差值为2的素数对,并统计总数。
7. 输出总数。
至此,我们可以使用这个筛选法的程序来解决孪生素数问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [python用递归筛选法求N以内的孪生质数(孪生素数)](https://blog.csdn.net/weixin_39734646/article/details/110990629)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [NYOJ-26 孪生素数问题](https://blog.csdn.net/memoryofyck/article/details/52059096)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
用埃拉托色尼筛选法输出 100 以内的所有素数。
好的,我可以帮您解答这个问题。以下是埃拉托色尼筛选法输出 100 以内的所有素数的代码:
```python
# 初始化列表,用布尔值表示每个数是否为素数
is_prime = [True] * 101
is_prime[0] = is_prime[1] = False
# 遍历 2 到 100,将素数的倍数标记为合数
for i in range(2, int(100 ** 0.5) + 1):
if is_prime[i]:
for j in range(i * i, 101, i):
is_prime[j] = False
# 输出素数
for i in range(2, 101):
if is_prime[i]:
print(i, end=' ')
```
这个算法首先将所有数都初始化为素数,然后从 2 开始遍历到 100 的平方根(因为超过平方根的因子肯定已经被标记过了),如果当前数是素数,就将它的倍数都标记为合数。最后输出所有素数即可。
阅读全文