加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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) // 基于新素数构造的过滤器
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读