1 | func main() { |
2 | primeChan := primes() |
3 | for i := 0; i < 10; i++ { |
4 | fmt.Println(<-primeChan) |
5 | } |
6 | } |
prime.go
· 548 B · Go
原始檔案
func primes() chan int {
ch := make(chan int)
go func() {
defer close(ch)
primes := []int{}
for i := 2; ; i++ {
isPrime := true
for _, p := range primes {
if p*p > i {
break
}
if i%p == 0 {
isPrime = false
break
}
}
if isPrime {
primes = append(primes, i)
ch <- i
}
}
}()
return ch
}
1 | func primes() chan int { |
2 | ch := make(chan int) |
3 | go func() { |
4 | defer close(ch) |
5 | primes := []int{} |
6 | for i := 2; ; i++ { |
7 | isPrime := true |
8 | for _, p := range primes { |
9 | if p*p > i { |
10 | break |
11 | } |
12 | if i%p == 0 { |
13 | isPrime = false |
14 | break |
15 | } |
16 | } |
17 | if isPrime { |
18 | primes = append(primes, i) |
19 | ch <- i |
20 | } |
21 | } |
22 | }() |
23 | return ch |
24 | } |
25 |