演算法題 判斷素數 質數

2021-08-07 21:52:12 字數 556 閱讀 3375

判斷素數

埃拉託斯特尼篩法:

這種方法的思想是設定乙個標誌陣列isprimes[n],標誌陣列的每一位標示相應的數是不是素數,初始化為全true。

演算法從i=2開始,依次將質數的倍數標記為非素數,即將標記陣列的相應位改為false。

標記質數的倍數的時候從i*i也就是i的平方開始標記,不需要從i*j(且j因為從i*i開始標記,所以i終止條件也為sqrt(n),否則i*i將大於n

此方法時間複雜度為o(n*lglgn),空間複雜度為o(n)。

void isprime(int n)

}stringstream str_stream;

for (auto i = 2; i < vec.size(); ++i)

str_stream << endl;

cout

<< str_stream.str();

}int main()

mysql 判斷質數 質數(素數)判斷演算法總結

1.原始演算法 就是將質數的定義翻譯成 就要看i是否能被小於它的sqrt i 的數整除。時間複雜度o n sqrt n 空間複雜度o m m為質數個數。2.質數篩法 定義bool is prime n 1 初始化為1 奇數為1,偶數為0 已經2為最小的質數,將2的倍數的布林值都設為false,如此類...

判斷素數與產生素數表(質數)

素數在小學數學也叫質數 方法 所謂素數是指除了1和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被2 16的任一整數整除。因此判斷乙個整數m是否是素數,只需把m被2 m 1之間的每乙個整數去除,如果都不能被整除,那麼m就是乙個素數。另外判斷方法還可以簡化。m不必唄2 m 1之間的每...

1106 質數檢測 簡單素數判斷

1106 質數檢測 基準時間限制 1秒 空間限制 131072 kb 分值 0難度 基礎題 給出n個正整數,檢測每個數是否為質數。如果是,輸出 yes 否則輸出 no input 第1行 乙個數n,表示正整數的數量。1 n 1000 第2 n 1行 每行1個數 2 s i 10 9 output 輸...