package main

import "fmt"

// Send the sequence 2, 3, 4, ... to channel 'ch'.
func generate(ch chan int) {
for i := 2; ; i++ {
ch <- i // Send 'i' to channel 'ch'.
}
} // Copy the values from channel 'in' to channel 'out',
// removing those divisible by 'prime'.
func filter(in, out chan int, prime int) {
for {
i := <-in // Receive value of new variable 'i' from 'in'.
if i%prime != 0 {
out <- i // Send 'i' to channel 'out'.
}
}
} // The prime sieve: Daisy-chain filter processes together.
func main() {
ch := make(chan int) // Create a new channel.
go generate(ch) // Start generate() as a goroutine.
for {
prime := <-ch
fmt.Print(prime, " \n")
ch1 := make(chan int)
go filter(ch, ch1, prime)
ch = ch1
}
}

这是一个求素数的程序,所谓素数就是除了1和自身以外,不能整除其他自然数的数,一个自然数如果不能被其它所有小于它的素数整除也称为素数,本例中就是用这些特性来求素数
设一个从二到无穷大的自然数数据流,逐级递增,先求出最小的素数,拿到该素数作为筛子,然后筛出比筛子大的最小素数,把这个筛选出的素数再次当作筛子,以此类推...

作者:hellodyp
链接:https://www.jianshu.com/p/21e7e8c23090
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

												

最新文章

  1. ajax onblur 用法
  2. Webshell实现与隐藏探究
  3. 关于C中scanf()函数读取字符串的问题
  4. js难点之闭包理解
  5. layer弹出层不居中解决方案,layer提示不屏幕居中解决方法,layer弹窗不居中解决方案
  6. HDU_2013——蟠桃记,反向推理
  7. StackExchange.Redis的使用 Redis五种数据类型的应用
  8. Python中List和Tuple类型
  9. node 基础精简
  10. mssql sqlserver 不固定行转列数据(动态列)
  11. mysql5.6做单向主从复制Replication
  12. IntelliJ IDEA 配置
  13. node.js依赖express解析post请求四种数据格式()
  14. Nodejs学习事件模块
  15. Android -- com.android.providers.media,external.db
  16. Redis命令、数据结构场景、配置文件总结
  17. TCP协议三次握手连接四次握手断开和DOS攻击
  18. 【VIPM技巧】多版本LabVIEW无法连接问题
  19. (转)JVM各种内存溢出是否产生dump
  20. bzoj 1023: [SHOI2008]cactus仙人掌图【tarjan+dp+单调队列】

热门文章

  1. VS2012隐藏输出窗口的快捷键是什么。
  2. 分享一个百万数量级的测试学习用的mysql数据集
  3. 怎么处理U盘无法正常弹出的情况?
  4. 《Linux就该这么学》day3
  5. C++堆排序算法的实现
  6. Acwing 197. 阶乘分解
  7. git fetch, merge, pull, push需要注意的地方
  8. sql关联查询更新速度慢的问题
  9. TCP_Wrappers访问控制
  10. Spring的BeanPostProcessor和BeanFactoryPostProcessor区别