一、判斷素數
int
judge
(int n)
return1;
}
注意:以上**中,for迴圈的結束條件是 i <= n/i,相當於i <= sqrt(n),兩種寫法都可以,只不過呼叫sqrt()函式會慢一些,因為for迴圈每次迴圈都會呼叫該函式。另外,不能寫成i * i <= n
因為當n很接近int的最大值時,i*i可能會溢位。
參考文章
二、埃氏篩(埃拉託斯特尼篩法,簡稱埃氏篩)
應用:求1到n之間的所有素數
暴力求法,遍歷[1,n]中所有的數,每次呼叫判斷素數的函式,這種方法,不用說也知道太浪費時間
埃氏篩的思想:乙個合數一定能被分解為幾個質數的冪的乘積
並且這個數的質因子一定是小於它本身的,所以當我們從小到大將每個質數的倍數都篩去的話,當遍歷到乙個合數時,它一定已經被它的質因子給篩去了。
比如:
4=2*2
6=2*3
105=3*5*7
const
int maxn=
10000000
;int a[maxn]=;
inte_sieve
(int n)
}}
可以對埃氏篩進行優化
1.我們會先篩除2的倍數,然後篩除3的倍數,但是當3篩除6、12、18...時,它們已經被2篩除過了,所以進行了
重複的操作。所以我們可以從i * i開始篩,因為i*2,i*3,i*5...等已經被2*i,3*i,5*i...篩除了。
2.判斷乙個數是不是素數,只要判斷在[2,sqrt(n)]之間有沒有它的質因子。
const
int maxn=
10000000
;int a[maxn]=;
inte_sieve
(int n)
}}
三、尤拉篩(線性篩)
算了,我不寫了,直接去膜拜大佬吧
這是大佬
推薦
nginx日誌方面知識整理
1.預設日誌內容介紹 預設的示例 注釋 remote addr 與 http x forwarded for 用以記錄客戶端的ip位址 remote user 用來記錄客戶端使用者名稱 time local 用來記錄訪問時間與時區 request 用來記錄請求的url與http協議 status 用...
jquery 方面知識
當需要取得 其中一行時 var items tr typeitemdata size 判斷 中是否有資料。tr td nth child 5 typeitemdata each function i,v 通過each函式讀取一行中第一列的值。mytrs live click function els...
迴圈方面的知識簡述
概念 什麼是迴圈 重複性的操作 四要素 1 迴圈變數的宣告和初始化 2 迴圈條件的構建 3 迴圈體 4 迴圈變數的更新 使用迴圈去解決問題 1 是否存在重複性 2 如果存在,確定四要素 3 選擇迴圈的結構,套用其語法 while 和 do while迴圈次數不確定的迴圈 while先判斷後執行 do...