package main

import (

"fmt"

"time"

)

func saveData(dataChan chan int){

var number = 2000000

for i:=1;i

dataChan

}

close(dataChan)

}

func dealData(dataChan chan int,statusChan chan bool,primeDataChan chan int) {

for {

value,status :=

if !status{

statusChan

break

}

flag := false

if value == 1{

primeDataChan

continue

}

for i:=2;i

if value % i == 0{

flag = true

break

}

}

if !flag{

primeDataChan

}

}

}

func main() {

var number int = 4

implementTime := time.Now()

primeDataChan := make(chan int,2000000)

dataChan := make(chan int,1000)

statusChan := make(chan bool,4)

go saveData(dataChan)

for i:=1;i<=number;i++{

go dealData(dataChan,statusChan,primeDataChan)

}

for i:=1;i<=number;i++{

}

fmt.Printf("progress time = %v \n",time.Since(implementTime).Seconds())

fmt.Println("prime count =",len(primeDataChan))

}