背景:我试图实现一个逻辑,它可以找到最小的正数,它可以被1到20之间的所有数字整除。我实现了一个顺序版本并得到了答案为232792560.更正我的公寓的实施
问:当我尝试建立在这个问题上的一些并发(见的代码取消注释块),它不运行,但从来没有显示有任何结果。你们中的任何一个人能指导我去哪里出错?
注意:我非常新golang;而我知道,因为没有保证,我将有最小的正数作为第一个结果,这不是并发最好的问题。不过,我出于好奇,试了一下。
package main
import(
"fmt"
)
func divide(num int) bool {
for i := 1; i <= 20; i++ {
if num % i != 0 {
return false
}
}
return true
}
func main() {
num:=0
//simple function
/*for {
num++;
result := divide(num)
if result {
fmt.Println("Smallest number is: ", num)
break
}
}*/
//go-routine
//go-routine
var wg sync.WaitGroup
for {
num++;
wg.Add(1)
go func(x int) {
result := divide(x)
if result {
fmt.Println("Smallest number is: ", x)
defer wg.Done()
}
}(num)
}
wg.Wait()
fmt.Println("End.")
}
希望这也很明显,蛮力的方法是不是解决问题的最好方法,同时或以其他方式。 – Iridium