标签:pack eal == prim gre continue printf lang UNC
<?php $startTime = time(); $number = 2000000; $primeNumbers = []; for ($i=1;$i<$number;$i++){ if ($i == 1){ $primeNumbers[] = $i; continue; } $flag = true; for ($j=2;$j<$i;$j++){ if ($i % $j == 0){ $flag = false; break; } } if ($flag){ $primeNumbers[] = $i; } } $endTime = time(); echo "progress time = ".($endTime - $startTime)."\n"; echo "prime count =".count($primeNumbers);
package main
import (
"fmt"
"time"
)
func saveData(dataChan chan int){
var number = 2000000
for i:=1;i<number;i++{
dataChan <- i
}
close(dataChan)
}
func dealData(dataChan chan int,statusChan chan bool,primeDataChan chan int) {
for {
value,status := <- dataChan
if !status{
statusChan <- true
break
}
flag := false
if value == 1{
primeDataChan <- value
continue
}
for i:=2;i<value;i++{
if value % i == 0{
flag = true
break
}
}
if !flag{
primeDataChan <- value
}
}
}
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++{
<- statusChan
}
fmt.Printf("progress time = %v \n",time.Since(implementTime).Seconds())
fmt.Println("prime count =",len(primeDataChan))
}
标签:pack eal == prim gre continue printf lang UNC
原文地址:https://www.cnblogs.com/ywjcqq/p/14421748.html