Skip to content

Instantly share code, notes, and snippets.

@damithadayananda
Created December 29, 2018 08:11
Show Gist options
  • Save damithadayananda/880285a0b974032a524c7a68f8e78173 to your computer and use it in GitHub Desktop.
Save damithadayananda/880285a0b974032a524c7a68f8e78173 to your computer and use it in GitHub Desktop.
Sieve of Eratosthenes algorithm implementation Golang
package main
import (
"runtime"
"fmt"
)
func main() {
nCPU:=runtime.NumCPU()
runtime.GOMAXPROCS(nCPU)
const maxNumber = 100
ch := make(chan int)
defer close(ch)
go Generate(ch)
for i:=0; i<maxNumber;i++{
prime := <-ch
fmt.Println(prime)
ch1:=make(chan int)
go Filter(ch,ch1,prime)
ch=ch1
}
}
func Generate(ch chan<- int){
for i:=2; ;i++ {
ch <-i
}
}
func Filter(in <-chan int,out chan <-int, prime int){
for{
i:= <-in
if i%prime !=0{
out <- i
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment