Go语言中文网 为您找到相关结果 9

GO的并行算法这么慢?

我的环境如下: INTEL I5-2500K 4CORE 3.7GHZ 8G 内存 我分别用C#4.0和GO1.1写了一个计算质数的小程序。 C#我分别用串行算法和并行算法计算了1000,10000,50000,100000以内的质数。 GOLANG我只是用了并行算法,也是计算了1000,10000,50000,100000以内大的质数。 算法很简单,就是两个for循环。本以为GO是本地语言,至少要比C#快一些的。结果却让我吐血 GO: 目前有4个CPU 执行1000次的时间 4 毫秒 .............................. 执行10000次的时间 256 毫秒 ...................阅读全文

go语言产生素数

package main // 生成2, 3, 4, ... 到 channel 'ch'中. func Generate(ch chan<- int) { for i := 2; ; i++ { ch <- i // Send 'i' to channel 'ch'. } } // 从管道复制值 'in' 到 channel 'out', // 移除可整除的数 'prime'. func Filter(in <-chan int, out chan<- int, prime int) { for { i := <-in // 接收值 'in'. if i%prime != 0 { out <- i // 传入 'i' 到 'out'. } } } func main() { ch := m...阅读全文

博文 2015-06-17 23:07:41 love_se

Go中的素数筛选

~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~ Examination Problem 质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。 判断101-200之间有多少个素数,并输出所有素数。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Analysis 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 在一般领域,对正整数n,如果用2到根号n之间的所有整数去除,均无法整除,则n为质数。 质数大于等于2不能被它本身和1以外的数整除 ~~~~...阅读全文

博文 2016-09-11 15:00:00 u013346007

一个有趣的求解质数的golang代码

看到一个golang写的求质数的程序,第一眼看上去很难理解,理解了之后又觉得很有趣,特此分析一下。 代码 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...阅读全文

博文 2018-11-22 05:34:39 StormZhu

golang99道练习题之14

**1.将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。** **2.程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:** (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 **3.程序源代码:** ```go package main import "fmt" func main() { var i, n int fmt.Print("n=") fmt.Scan(&n) fmt.Printf("%d=", n) for i = 2; i < n;...阅读全文

博文 2018-11-21 09:54:07 hdking

Go中的素数筛选

~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~ Examination Problem 质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。 判断101-200之间有多少个素数,并输出所有素数。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Analysis 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 在一般领域,对正整数n,如果用2到根号n之间的所有整数去除,均无法整除,则n为质数。 质数大于等于2不能被它本身和1以外的数整除 ~~~~...阅读全文

博文 2016-09-03 03:00:01 u013346007

Rabin-Karp算法在go的实现

文链接 github 简介 Rabin-Karp字符串快速查找算法和FNV hash算法是golang中strings包中字符串查所用到的具体算法,算法的核心就在于循环hash,而 FNV则是散列方法的具体算法实现。 算法思想 Rabin-Karp算法思想: 假设待匹配字符串长度M,目标字符串长度N(N>M) 首先计算待匹配字符串hash,计算目标字符串前M个字符hash 比较前两个hash值,比较次数N-M+1 若hash不相等,继续计算目标字符串下一个长度为M的hash并继续循环比较 若hash相等则再次判断字符串是否相等已确保正确性 FNV hash: 将字符串看作是字符串长度的整数,这个数的进制是一个质数。计算出来结果之后,按照哈希的范围求余数得到结果。 其中不同机制对应质数分别是:...阅读全文

博文 2019-09-26 21:32:51 aside section ._1OhGeD

Golang

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 ...阅读全文

博文 2020-04-17 23:32:48 CAICAI0

leetcode_1175

Golang: 思路:简单的全排列问题,n中有i个质数,j个非质数,那么就是i的阶乘乘以j的阶乘,注意阶乘很大,所以要处理下。 代码如下: func numPrimeArrangements(n int) int { if n<=2{ return 1 } primes:=[]int{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101} nmp:=0 for primes[nmp]<=n{ nmp++ } //此时得到的nmp为质数的个数 nmn:=n-nmp short:=0 long:=0 if nmp>nmn { short,long=nmn,nmp }else{ short,long=n...阅读全文

博文 2020-02-17 20:32:42 淳属虚构