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è)置標記,將偶數(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; }
相關(guān)文章
解決C++ fopen按行讀取文件及所讀取的數(shù)據(jù)問題
今天小編就為大家分享一篇解決C++ fopen按行讀取文件及所讀取的數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07關(guān)于C++智能指針shared_ptr和unique_ptr能否互轉(zhuǎn)問題
C++中的智能指針最常用的是shared_ptr和unique_ptr,C++新手最常問的問題是我從一個函數(shù)中拿到unique_ptr,但要轉(zhuǎn)成shared_ptr才能使用,要怎么轉(zhuǎn)換?同理是否能將shared_ptr轉(zhuǎn)換成unique_ptr,面對這些問題,跟隨小編一起看看吧2022-05-05