# Golang

CAICAI0 · · 475 次点击 · · 开始浏览

1. 12核心跑满计算质数

`````` func main()  {
primes := []int{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,71,73,79,83,89,97}
var limit = make(chan int , 12)
m := sync.Mutex{}
for i := 100; i < 10000000; i++ {
limit <- i
go func(i int) {
p := true
for j := 0;j < len(primes); j++ {
pri := primes[j]
if float64(pri) <= math.Sqrt(float64(i)) && i%pri == 0 {
p = false
break
}
}
if p {
fmt.Println(i)
m.Lock()
primes = append(primes, i)
m.Unlock()
}
<- limit
}(i)
}
}``````

0 回复

• 请尽量让自己的回复能够对别人有帮助
• 支持 Markdown 格式, **粗体**、~~删除线~~、``单行代码``
• 支持 @ 本站用户；支持表情（输入 : 提示），见 Emoji cheat sheet
• 图片支持拖拽、截图粘贴等方式上传
1. 12核心跑满计算质数

`````` func main()  {
primes := []int{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,71,73,79,83,89,97}
var limit = make(chan int , 12)
m := sync.Mutex{}
for i := 100; i < 10000000; i++ {
limit <- i
go func(i int) {
p := true
for j := 0;j < len(primes); j++ {
pri := primes[j]
if float64(pri) <= math.Sqrt(float64(i)) && i%pri == 0 {
p = false
break
}
}
if p {
fmt.Println(i)
m.Lock()
primes = append(primes, i)
m.Unlock()
}
<- limit
}(i)
}
}``````