Go言語でn以下の素数を求める

関連 : エラトステネスのふるい - brainstorm

練習のため書いてみたけどすっきりしない

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)
	}

}