1. 程式人生 > 實用技巧 >查詢素數

查詢素數

素數

除了1和本身之外,不能被其他數整除的一類數

1.對給定的正整數n,對任意的正整數a(1<a<n)都有n%a!=0成立

2.一既不是素數也不是合數

3.n2n-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; }