leetcode之204計數質數Golang

2022-06-07 11:06:08 字數 1126 閱讀 9037

統計所有小於非負整數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 厄拉...