21xrx.com
2024-09-20 00:49:11 Friday
登录
文章检索 我的文章 写文章
C++程序:输出第n小质数
2023-07-04 19:52:53 深夜i     --     --
C++ 程序 输出 第n小 质数

质数是指除了1和它本身之外,没有其他的因数能够整除这个数的自然数。求一个数列中第n小的质数是一个经典的问题,对程序员来说也是一项不可避免的任务。下面介绍使用C++来输出第n小的质数的方法。

首先,我们需要明确一个质数的定义和判断方法。一个数是质数,当且仅当它是大于1的自然数,且它不能被它本身以外的数整除。因此,我们可以写一个函数来判断一个数是否为质数,这个函数的代码如下:


bool isPrime(int n) {

  if (n <= 1)

    return false;

  

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

    if (n % i == 0)

      return false;

    

  }

  return true;

}

这个函数采用了“试除法”的方法,通过从2到n平方根之间的所有数去试除n,来判断是否为质数。如果在这个范围内,有能整除n的数,那么n就不是质数,返回false;否则,n就是质数,返回true。

接下来,我们需要写一个函数来输出第n小的质数。这个函数通过遍历所有自然数,统计出质数的数量,来求得第n小的质数。代码如下:


int nthPrime(int n) {

  int cnt = 0;

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

    if (isPrime(i)) {

      ++cnt;

      if (cnt == n)

        return i;

      

    }

  }

  return -1;

}

这个函数通过调用刚才的“isPrime”函数来判断一个数是否为质数,如果是质数,则计数器“cnt”+1,当计数器达到n时,返回当前遍历到的这个数i。

最后,我们在main函数中调用“nthPrime”函数并输出结果,代码如下:


#include <iostream>

using namespace std;

int nthPrime(int n) {

  int cnt = 0;

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

    if (isPrime(i)) {

      ++cnt;

      if (cnt == n)

        return i;

      

    }

  }

  return -1;

}

int main() {

  int n;

  cout << "请输入正整数n:";

  cin >> n;

  cout << "第" << n << "小的质数是:" << nthPrime(n) << endl;

  return 0;

}

这个程序需要用户输入一个正整数n,然后输出第n小的质数。

经过上面的介绍,相信你已经知道如何使用C++来输出第n小的质数了。通过判断一个数是否为质数,统计已经找到的质数数量,即可找到第n小的质数。这是一个简单而又经典的算法题,也是提高程序员的编程能力和算法思维的好方法。

  
  

评论区

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