21xrx.com
2024-09-20 00:40:41 Friday
登录
文章检索 我的文章 写文章
C++小白求解100到200间的素数
2023-07-03 12:33:14 深夜i     --     --
C++ 素数 求解 小白 100-200

作为一名C++小白,求解100到200间的素数可能会让你感到有些棘手。但是,通过一些简单的算法和代码实现,我们可以轻松地找到这些素数。在本文中,我将分享一些我用于解决这个问题的方法。

首先,我们需要回忆起素数是什么。素数是只能被1和其本身整除的正整数。我们需要检查100到200之间的每个数字是否为素数。这可能会花费很长时间,因为有许多数字需要进行检查。

我们可以使用“筛法”来加速此过程。筛法是一种用于找到素数的算法,它通过从候选素数集合中筛除合数来实现。我们可以将100到200之间的数字作为候选素数集合。

筛法的基本思想是:将2的倍数、3的倍数、4的倍数……这样的合数从候选素数集合中剔除,只保留剩下的数字。具体实现方法如下:

1. 创建一个数组用于存储100到200之间的数字。

2. 初始化数组,将0和1设为非素数,将其他数字都设为素数。

3. 从2开始,将数组中2的倍数标记为非素数。

4. 重复步骤3,将3的倍数、4的倍数、5的倍数……这样的合数标记为非素数。

5. 数组中留下的数字即为所求的素数。

下面是用C++实现的代码:


#include<iostream>

using namespace std;

int main()

{

  int num[101]; //存储100~200之间的数字

  int i, j;

  for(i=0; i<101; i++)

    num[i] = i+100; //初始化数组

  num[0] = num[1] = 0; //0和1不是素数

  for(i=2; i*i<=200; i++) //i从2遍历到200的平方根

  {

    if(num[i-100] != 0) //如果num[i-100]是素数

    {

      for(j=2*i; j<=200; j+=i)

        num[j-100] = 0; //将i的倍数标记为非素数

    }

  }

  for(i=0; i<101; i++)

  {

    if(num[i] != 0) //输出留下的素数

      cout << num[i] << " ";

  }

  return 0;

}

在这个代码中,我们定义了一个长度为101的数组来存储100到200之间的数字。我们首先将0和1标记为非素数。然后从2开始遍历数组,如果一个数字是素数,我们就将其倍数标记为非素数。最后,输出留下的素数。

使用上面的代码,我们可以很容易地找到100到200之间的素数。希望这个简单的算法可以帮助C++小白们更好地掌握C++编程!

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复