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