21xrx.com
2024-09-19 23:54:30 Thursday
登录
文章检索 我的文章 写文章
C++如何判断素数?
2023-07-13 16:15:10 深夜i     --     --
C++ 素数 判断

素数,是指只能被1和它本身整除的自然数。在计算机程序中,判断一个数是不是素数是一个常见的问题。C++是一门流行的编程语言,下面介绍C++如何判断素数。

方法一:暴力判断法

暴力判断法就是一个一个地试除,从2到该数的平方根之间的每一个数判断是否能被该数整除。如果能被整除,那么该数就不是素数,否则就是素数。

下面是使用暴力判断法判断一个数是否为素数的C++代码:


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;

}

方法二:埃氏筛法

埃氏筛法是一种简单的质数筛法,可以用来求出一定范围内的所有素数。具体步骤如下:

1.先把从2开始的所有数写下来,然后把2的倍数都划去;

2.找到第一个没划去的数,它就是素数,然后把它的倍数都划去;

3.依此类推,直到无法找到下一个素数为止。

下面是使用埃氏筛法判断一个数是否为素数的C++代码:


bool isPrime(int n) {

  if(n<=1)

    return false;

  

  vector<bool> isPrime(n+1,true);

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

    if(isPrime[i]) {

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

        isPrime[j]=false;

      }

    }

  }

  return isPrime[n];

}

通过以上两种方法,我们可以简单地判断一个数是否为素数。当然,在实际开发中,我们可能需要判断一段区间内有多少个素数,或者需要对大素数进行判断,这就需要使用更加高效的算法,比如欧拉筛法、米勒-拉宾素性检验等。

  
  

评论区

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