Go语言的素数筛
发布时间:2020-12-16 18:53:17 所属栏目:大数据 来源:网络整理
导读:!-- lang: cpp --package mainimport ("fmt""runtime""runtime/debug")// 返回生成自然数序列的管道: 2,3,4,...func GenerateNatural() chan int {ch := make(chan int)go func() {for i := 2; ; i++ {ch - i}}()return ch}// 管道过滤器: 删除能被素数整除
<!-- lang: cpp --> package main import ( "fmt" "runtime" "runtime/debug" ) // 返回生成自然数序列的管道: 2,3,4,... func GenerateNatural() chan int { ch := make(chan int) go func() { for i := 2; ; i++ { ch <- i } }() return ch } // 管道过滤器: 删除能被素数整除的数 func PrimeFilter(in <-chan int,prime int) chan int { out := make(chan int) go func() { for { if i := <-in; i%prime != 0 { out <- i } } }() return out } // 素数筛: 菊花链模型 func main() { runtime.GOMAXPROCS(1) debug.SetMaxThreads(5) ch := GenerateNatural() // 自然数序列: 2,... for i := 0; i < 100; i++ { prime := <-ch // 新出现的素数 fmt.Printf("%v: %vn",i+1,prime) ch = PrimeFilter(ch,prime) // 基于新素数构造的过滤器 } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |