定義: 素數是大於 \(1\) 的正整數, 並且除了 \(1\) 和它本身外不能被其他正整數整除。
素數的數量: 不超過 \(n\) 的素數大約有 \(\frac\) 個。
素性檢驗
人話: 判斷乙個數是否是素數。
試除法原理: 如果乙個數 \(x\) 能整除 \(n\) 那麼 \(\frac\) 也一定能整除 \(n\) , \(x\) 與 \(\frac\) 中必定有乙個數 \(\le \sqrt n\)。因此只需列舉 \([2,\sqrt n]\) 中每乙個數,判讀是否能整除 \(n\) 即可。
時間複雜度 \(o(\sqrt n)\) .
inline bool is_prime(int n)
miller-robbin 演算法
咕咕咕素數篩法
埃拉託色尼斯篩法 求最大公因子
問題 窮舉法 求兩個數的最大公因子,對於輸入的a b的值,首先確定較小者min,即當ab時min b,然後依次測試min 1,min 2,min 3,1,而最先能同時被a,b整除的那個數,就是a和b的最大公因子。一旦找到最大公因子,無需繼續測試下去。1 求a,b的最大公因子 2 include3 i...
最大素數因子(hdu2136)
題意 每個素數在素數表中都有乙個序號,設1的序號為0,則 2 的序號為1,3的序號為2,5的序號為3,以此類推。現在要求輸出 所 給定的數n的最大質因子的序號,0分析 應用素數打表法。用flag計算素數的序號,將素數連同他的倍 數一起置為它的素數序號,從小到大迴圈,這樣陣列裡存放的序號就 是最大素數...
(C )求最大公因子(輾轉相除法)
具體演算法也可以看這篇 求任意兩個整數m,n最大公因子 m,n 的方法如下 若 m n q r 其中 r為餘數,滿足 0 r n 1 則 m,n n,r 且當 r 0時,m,n n 按照這種方法,可以快速而方便地求出任意兩個整數的最大公因子。例如,1500,550 的求解過程如下 1500,550 ...