21xrx.com
2024-11-08 21:20:57 Friday
登录
文章检索 我的文章 写文章
C++实现:输出1到n之间的素数,若没有则输出-1
2023-07-09 17:59:25 深夜i     --     --
C++ 素数 输出 实现 -1

素数是指只能被1和自身整除的数,例如2、3、5、7等都是素数。在C++中,我们可以通过编写程序来输出1到n之间的所有素数。

为了实现这个功能,我们需要依次判断1到n之间每个数是否是素数。具体的实现方法如下:

1. 首先,我们循环遍历1到n之间每一个数;

2. 对于每个数,我们都对其进行判断是否是素数;

3. 判断方法是:从2开始,依次判断该数是否能被2、3、4、......、该数本身-1整除,如果存在可以整除的数,则该数不是素数;否则,该数是素数。

4. 如果1到n之间有素数,则输出所有素数;

5. 如果1到n之间没有素数,则输出-1。

下面是一段示例代码:


#include <iostream>

#include <vector>

using namespace std;

vector<int> getPrimes(int n) {

  vector<int> res;

  for (int i = 2; i <= n; i++) {

    bool isPrime = true;

    for (int j = 2; j < i; j++) {

      if (i % j == 0)

        isPrime = false;

        break;

      

    }

    if (isPrime) res.push_back(i);

  }

  return res;

}

int main() {

  int n;

  cin >> n;

  vector<int> primes = getPrimes(n);

  if (primes.empty()) cout << "-1" << endl;

  else {

    for (int prime : primes)

      cout << prime << " ";

    

    cout << endl;

  }

  return 0;

}

该程序使用vector容器来保存所有素数,函数getPrimes(n)用于返回1到n之间的所有素数。首先,我们循环遍历1到n之间每一个数,然后对每个数进行判断是否是素数,如果是素数则将该数加入到vector中。最后,判断vector是否为空,如果为空输出-1,否则输出所有素数。

需要注意的是,该程序的时间复杂度为O(n^2),在处理大数据时会比较耗时。如果需要更高效的求素数方法,可以使用筛选法等算法。

综上所述,C++可以很方便地输出1到n之间的素数,并可以通过vector等容器来保存结果。在程序的实现过程中需要注意时间复杂度和算法的选择。

  
  

评论区

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