C++中的素數篩選大家清楚嗎?它是一種求取不超過自然數的方法,那么就讓武林技術頻道小編帶我們一起了解c++素數篩選法吧,希望對你了解這方面知識有所幫助。
素數(又稱質數):指在大于一的自然數中,只能被1和它自身整除的自然數;
素數篩選法是指一種非常規的素數判定方法,比較高效率;
原理:任何數的整數倍必定不是素數,大于二的偶數必定不是素數。
我們以找出100以內的素數為例,利用原理,我們可以首先排除偶數是素數,然后進一步判斷奇數
實現將偶數標記為0,素數標記為1;(也可以用一個bool數組將偶數標記為false,奇數標記為true)
下面是全部代碼
#include <iostream>#include <cmath>#define MAX 100 using namespace std;int main(){ //設置標記,將偶數標記為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++素數篩選法,希望能夠幫助到對此需要的你,我們在開發程序的時候都會遇到瓶頸,這個時候我們要越過去,才能更加強大。
新聞熱點
疑難解答
圖片精選