求100以內的素數
阿新 • • 發佈:2022-04-08
普通方法
/*求100以內的素數*/ #include<cstdio> #include<math.h> const int maxn = 101; //判斷是否是素數 bool isPrime(int n){ if(n<=1) return false; //特判 int sqr = (int)sqrt(1.0*n); for(int i=2;i<=sqr;i++){ if(n%i==0) return false; } return true; } int prime[maxn]; int p=0; //尋找素數函式 void FindPrime(){ for(int i=1;i<maxn;i++){ if(isPrime(i)){ prime[p++]=i; } } } //主函式 int main(){ FindPrime(); for(int i=0;i<p;i++){ printf("%d ",prime[i]); } return 0; }
篩選法(時間複雜度低)
/*求100以內的素數*/ #include<cstdio> #include<math.h> const int maxn = 101; int prime[maxn]; int p=0; bool pr[maxn]={0}; //如果i為素數,則pr[i]為false;否則pr[i]為true void FindPrime(){ for(int i=2;i<maxn;i++){ if(pr[i]==false){ //如果i是素數 prime[p++]=i; //把素數存在prime陣列中 for(int j=i+i;j<maxn;j=j+i){ pr[j]=1; //為非素數 } } } } //主函式 int main(){ FindPrime(); for(int i=0;i<p;i++){ printf("%d ",prime[i]); } return 0; }