21xrx.com
2024-09-17 04:26:57 Tuesday
登录
文章检索 我的文章 写文章
C++求素数
2023-07-08 09:44:54 深夜i     --     --
C++ 素数 判断 循环 算法

素数是指除了1和本身之外没有其他因数的数,如2、3、5、7、11等。在计算机领域,求素数是一个非常基础的问题,因为在很多算法中都需要用到素数。

C++是一门常用的编程语言,在其中求素数也非常简单。下面介绍一种常用的方法。

方法一:试除法

试除法是指从2开始,逐个试除直到该数的平方根,若没有其他因数,即可确定该数是素数。

下面是该方法的C++代码实现:


#include<iostream>

#include<cmath>

using namespace std;

int main()

{

  int n;

  cout<<"请输入一个整数"<<endl;

  cin>>n;

  bool prime=true;

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

  {

    if(n%i==0)

    

      prime=false;

      break;

    

  }

  if(prime)

    cout<<n<<"是素数"<<endl;

  else

    cout<<n<<"不是素数"<<endl;

  return 0;

}

方法二:埃氏筛法

埃氏筛法是一种筛法,可以在一段范围内快速筛选出所有的素数。具体做法是从2开始,将所有能被2整除的数标记为合数,然后从下一个素数3开始,将所有能被3整除的数标记为合数,以此类推,直到已知范围内的最大素数的平方根。

下面是该方法的C++代码实现:


#include<iostream>

#include<cmath>

using namespace std;

void Sieve(int n)

{

  bool *arr = new bool[n+1];

  for(int i=0;i<n+1;i++)

    arr[i]=true;

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

  {

    if(arr[i]==true)

    {

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

        arr[j]=false;

    }

  }

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

  {

    if(arr[i]==true)

      cout<<i<<" ";

  }

  cout<<endl;

  delete[] arr;

}

int main()

{

  int n;

  cout<<"请输入一个整数"<<endl;

  cin>>n;

  cout<<"从1到"<<n<<"的所有素数是:"<<endl;

  Sieve(n);

  return 0;

}

以上是C++求素数的两种常用方法。在实际应用中,可以根据需要选择不同的方法来求解。无论使用哪种方法,都需要运用数学知识和编程技巧来实现。

  
  

评论区

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