C++筛选法求素数输入m、n(m,n<100),输出[m,n]之间的素数。要求:使用筛选法求素数。求100以内素数的筛选过程:在一张纸上写上1到100全部整数,然后逐个判断它们是否是素数, 找

筛选法求素数

输入m、n(m,n<100),输出[m,n]之间的素数。要求:使用筛选法求素数。

求100以内素数的筛选过程:在一张纸上写上1到100全部整数,然后逐个判断它们是否是素数, 找出所有的非素数,把它挖掉,最后剩下的就是素数。提示:可以将1100这些数存储于数组1100下标,挖掉的数据置为0。

具体做法如下:

<1> 先将1挖掉(因为1不是素数)。

<2> 找到数组中第一个非零值(2),把2的倍数挖掉。

<3> 重复步骤<2>,再把3,。。。的倍数挖掉,直至11时结束(实际上可以挖掉7的倍数后即可结束)。

<4> 数组中非零值即为素数。

Sample Input

5 19

Sample Output

5 7 11 13 17 19

#include<iostream>

using namespace std;

const int Max = 101;

int main()

{

    int a[Max], i, j,m,n;

       for (i = 1; i < 101; i++)//可以将1~100这些数存储于数组1~100下标

              a[i] = i;

       a[1] = 0;//挖掉的数据置为0

       for (j = 2; j <= 11;j++)

              for (i = j + 1; i < 101; i++)//遍历数组将符合条件的置为0

                     if (a[i] % j == 0)

                            a[i] = 0;

       cin >> m >> n;

       for (i = m; i <= n; i++)

              if (a[i] != 0)//数组中非零值即为素数

                     cout << a[i] << " ";

       cout << endl;

       return 0;

}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值