C++中的素?cái)?shù)篩選大家清楚嗎?它是一種求取不超過(guò)自然數(shù)的方法,那么就讓武林技術(shù)頻道小編帶我們一起了解c++素?cái)?shù)篩選法吧,希望對(duì)你了解這方面知識(shí)有所幫助。
素?cái)?shù)(又稱質(zhì)數(shù)):指在大于一的自然數(shù)中,只能被1和它自身整除的自然數(shù);
素?cái)?shù)篩選法是指一種非常規(guī)的素?cái)?shù)判定方法,比較高效率;
原理:任何數(shù)的整數(shù)倍必定不是素?cái)?shù),大于二的偶數(shù)必定不是素?cái)?shù)。
我們以找出100以內(nèi)的素?cái)?shù)為例,利用原理,我們可以首先排除偶數(shù)是素?cái)?shù),然后進(jìn)一步判斷奇數(shù)
實(shí)現(xiàn)將偶數(shù)標(biāo)記為0,素?cái)?shù)標(biāo)記為1;(也可以用一個(gè)bool數(shù)組將偶數(shù)標(biāo)記為false,奇數(shù)標(biāo)記為true)

下面是全部代碼
#include <iostream>#include <cmath>#define MAX 100 using namespace std;int main(){ //設(shè)置標(biāo)記,將偶數(shù)標(biāo)記為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; } 以上就是武林技術(shù)頻道小編介紹的c++素?cái)?shù)篩選法,希望能夠幫助到對(duì)此需要的你,我們?cè)陂_(kāi)發(fā)程序的時(shí)候都會(huì)遇到瓶頸,這個(gè)時(shí)候我們要越過(guò)去,才能更加強(qiáng)大。
新聞熱點(diǎn)
疑難解答