求質數的方法有以下幾種:
1.試除法:從2開始,依次除以小于該數的所有整數,如果都無法整除,則該數為質數。該方法的時間復雜度為O(n)。
2.埃氏篩法:首先創建一個長度為n+1的布爾數組,將所有元素初始化為True。然后從2開始,將所有2的倍數標記為False,然后繼續下一個未被標記為False的數,以此類推,直到n的平方根。最后剩下的未被標記為False的數即為質數。該方法的時間復雜度為O(n log(log n))。
3.改進的埃氏篩法:與上述方法類似,但只需要標記奇數的倍數,可以將數組的大小減半。該方法的時間復雜度也為O(n log(log n))。
4.米勒-拉賓素性測試:該方法不是直接判斷一個數是否為質數,而是通過判斷一個數是否是合數的概率來確定是否為質數。該方法的時間復雜度為O(k log^3 n),其中k為測試的次數。
5.費馬素性測試:與米勒-拉賓素性測試類似,也是通過判斷一個數是否是合數的概率來確定是否為質數。該方法的時間復雜度為O(k log^3 n),其中k為測試的次數。
6.拉賓-米勒素性測試:與米勒-拉賓素性測試類似,也是通過判斷一個數是否是合數的概率來確定是否為質數。該方法的時間復雜度為O(k log^3 n),其中k為測試的次數。
這些方法各有優缺點,選擇合適的方法取決于具體情況和需求。