查詢素數
阿新 • • 發佈:2020-08-19
素數
除了1和本身之外,不能被其他數整除的一類數
1.對給定的正整數n,對任意的正整數a(1<a<n)都有n%a!=0成立
2.一既不是素數也不是合數
3.n與2到n-1中每一個數相除來測試是否能否整除,但是O(n)複雜度有點大,為了優化,可以通過平方來減少次數
#include<iostream> #include<math.h> using namespace std; int prime[10000]; int pNum=0; bool p[10000]={0}; bool isPrime(int n){//判斷n是否為素數 if(n<=1){return false; } for(int i=2;i*i<=n;i++){ if(n%i==0){ return false; } } return true; } void Find_Prime(int n){//求素數表 for(int i=1;i<=n;i++){ if(isPrime(i)==true){ prime[pNum++]=i; p[i]=true; } } } int main(){int n; while(cin>>n){ Find_Prime(n); for(int i=0;i<pNum;i++){ cout<<prime[i]<<" "; } if(pNum==0){//如果沒有素數則輸出-1 cout<<"-1"; } cout<<endl; } return 0; }