golang---素数ふるいアルゴリズム
2162 ワード
直列go channelを用いて実現し,ふるいアルゴリズム,高同時
package main
import (
"fmt"
"runtime"
"runtime/debug"
)
// : 2, 3, 4, ...
func GenerateNatural() chan int {
ch := make(chan int)
go func() {
for i := 2; ; i++ {
ch return ch
}
// :
func PrimeFilter(in chan int, prime int) chan int {
out := make(chan int)
go func() {
for {
if i := 0 {
out return out
}
// :
func main() {
runtime.GOMAXPROCS(1)
debug.SetMaxThreads(5)
ch := GenerateNatural() // : 2, 3, 4, ...
for i := 0; i < 100; i++ {
prime := //
fmt.Printf("%v: %v
", i+1, prime)
ch = PrimeFilter(ch, prime) //
}
}