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