統計所有小於非負整數n
的質數的數量。
示例 1:
輸入:n = 10
輸出:4
解釋:小於 10 的質數一共有 4 個, 它們是 2, 3, 5, 7 。
示例 2:
輸入:n = 0
輸出:0
示例 3:
輸入:n = 1
輸出:0
如果用暴力破解,那麼毫無疑問會超時,從題解中知道了乙個叫厄拉多塞篩法的方法
func countprimes(n int) int
isprime := make(bool, n)
isprime[0], isprime[1] = true, true
for i := 2; i < n; i++
break
}} }
count := 0
for _, value := range isprime
} return count
}
在上面的**中,我們構建了乙個bool
陣列,如果n
很大的時候,這個陣列所佔的記憶體空間也是很大的,所以我們將這個**優化一下,以0,1
位元來表示對應的數是不是素數。此時我們只需要乙個128就能夠表示n等於8的情況了,而上面的情況卻需要8個位元組,可以直接使用golang
原始碼的math/big
包來處理大數運算
func countprimes1(n int) int
// 如果這一位是0,說明他是素數,但是他的2倍,3倍。。。直到超過n,都是合數
for multipul := 2; ;
break
} }count := 0
// 直接計算n位之內有多少個0就可以了,就得到了素數的個數
for i := 0; i < n; i++
} return count
}
LeetCode從讀題到自閉 204 計數質數
示例 1 輸入 n 10輸出 4 解釋 小於 10 的質數一共有 4 個,它們是 2,3 5,7 示例 2 輸入 n 0輸出 0 示例 3 輸入 n 1輸出 0 0 n 5 10 6 class solution return ans public boolean isprime int x ret...
leetcode 204 計數質數
統計所有小於非負整數 n 的質數的數量。示例 輸入 10輸出 4解釋 小於 10 的質數一共有 4 個,它們是 2,3,5,7 厄拉多塞篩法 西元前250年,希臘數學家厄拉多塞 eeatosthese 想到了乙個非常美妙的質數篩法,減少了逐一檢查每個數的的步驟,可以比較簡單的從一大堆數字之中,篩選出...
leetcode204 計數質數
統計所有小於非負整數 n 的質數的數量。示例 輸入 10 輸出 4 解釋 小於 10 的質數一共有 4 個,它們是 2,3,5,7 厄拉多賽篩法,先找到不超過根號n的所有素數,再把這些素數的所有倍數去掉 class solution def countprimes self,n int int 厄拉...