質數篩選法(埃拉託斯特尼篩法)是在乙個尋找給定範圍內最大質數的古老演算法。它通過一定的順序篩掉多個質數的乘積,最終得到想要的最大質數。
這個演算法的並行版本定義了多個 goroutine,每個 goroutine 代表乙個已經找到的質數,同時有多個 channel 用來從 generator 傳輸資料到 filter。每當找到質數時,這個質數就會被一層層 channel 送到 main 函式來輸出。
// a concurrent prime sieve
package main
import "fmt"
// send the sequence 2, 3, 4, ... to channel 'ch'.
func generate(ch chan
}// copy the values from channel 'in' to channel 'out',
// removing those divisible by 'prime'.
func filter(in
}}// the prime sieve: daisy-chain filter processes.
func main()
}
演算法流程圖形說明:
質數 篩選法
篩數法求素數 篩數法求素數的基本思想是 把從1開始的 某一範圍內的正整數從小到大順序排列,1不是素數,首先把它篩掉。剩下的數中選擇最小的數是素數,然後去掉它的倍數。依次類推,直到篩子為空時結束。public void printprimes int n 定義arr陣列來表示篩選出來的素數 boole...
質數篩選 素數篩選法
int prime 100010 void prime for int i 1 i i 1000000 i define size 1000000 int main 元素值為0代表是素數 int prime size int pos 0 int flag for int i 2 i size i p...
用篩選法求質數
file exam 1 1.c brief exam 1 1 用篩選法求100以內的質數 質數 prime number 又稱素數,有無限個。乙個大於1的自然數,除了1和它本身外,不能被其他自然數整除,換句話說就是該數除了1和它本身以外不再有其他的因數 否則稱為合數。根據算術基本定理,每乙個比1大的...