c++素數(shù)篩選法
素數(shù)(又稱質(zhì)數(shù)):指在大于一的自然數(shù)中,只能被1和它自身整除的自然數(shù);
素數(shù)篩選法是指一種非常規(guī)的素數(shù)判定方法,比較高效率;
原理:任何數(shù)的整數(shù)倍必定不是素數(shù),大于二的偶數(shù)必定不是素數(shù)。
我們以找出100以內(nèi)的素數(shù)為例,利用原理,我們可以首先排除偶數(shù)是素數(shù),然后進一步判斷奇數(shù)
實現(xiàn)將偶數(shù)標記為0,素數(shù)標記為1;(也可以用一個bool數(shù)組將偶數(shù)標記為false,奇數(shù)標記為true)

下面是全部代碼
#include <iostream>
#include <cmath>
#define MAX 100
using namespace std;
int main()
{
//設置標記,將偶數(shù)標記為0
int prime[MAX+1];
for(int i=1;i<=MAX;i++)
{
if(i%2==0)
{
prime[i]=0;
}
else prime[i]=1;
}
for(int i=3;i<=sqrt(MAX);i++)
{
if(prime[i]==1)
{
for(int j=i+i;j<=MAX;j=j+i)
{
prime[j]=0;
}
}
}
cout<<"2"<<" ";
for(int i=3;i<=MAX;i++)
{
if(prime[i]==1)
cout<<i<<" ";
}
return 0;
}
相關文章
解決C++ fopen按行讀取文件及所讀取的數(shù)據(jù)問題
今天小編就為大家分享一篇解決C++ fopen按行讀取文件及所讀取的數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
關于C++智能指針shared_ptr和unique_ptr能否互轉問題
C++中的智能指針最常用的是shared_ptr和unique_ptr,C++新手最常問的問題是我從一個函數(shù)中拿到unique_ptr,但要轉成shared_ptr才能使用,要怎么轉換?同理是否能將shared_ptr轉換成unique_ptr,面對這些問題,跟隨小編一起看看吧2022-05-05

