Go言語でn以下の素数を求める
練習のため書いてみたけどすっきりしない
package main import ( "fmt" "math" ) func Sieve(n int) chan int { s := make([]bool, n) for x := 2; x < int(math.Sqrt(float64(n)))+1; x++ { if !s[x] { for i := x + x; i < len(s); i = i + x { s[i] = true } } } ch := make(chan int) go func() { for i := 0; i < n; i++ { if i > 1 && !s[i] { ch <- i } } close(ch) }() return ch } func main() { for e := range Sieve(10000) { fmt.Println(e) } }