为了账号安全,请及时绑定邮箱和手机立即绑定

去和一个不好的素数算法

去和一个不好的素数算法

Go
茅侃侃 2021-04-02 14:11:32
我写了这个素数筛选算法,它不能正常运行。我在算法本身中找不到错误。有人可以帮我吗?这是应该打印的内容:[2 3 5 7 11 13 17 19 23 29]与它实际打印的内容:[3 5 7 11 13 17 19 23 25 29]。package mainimport "fmt"func main() { var primes = sieve(makeNumbers(29)) fmt.Printf("%d\n", primes);}func makeNumbers(n int) []int { var numbers = make([]int, n - 1) for i := 0; i < len(numbers); i++ {  numbers[i] = i + 2 } return numbers}func sieve(numbers []int) []int { var numCopy = numbers var max = numbers[len(numbers)-1] var sievedNumbers = make([]int, 0) for i := 0; numCopy[i]*numCopy[i] <= max; i++ {  for j := i; j < len(numCopy); j++ {   if numCopy[j] % numCopy[i] != 0 || j == i {    sievedNumbers = append(sievedNumbers, numCopy[j])   }  }  numCopy = sievedNumbers  sievedNumbers = make([]int, 0)  } return numCopy}
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

应该是“对于j:= 0”,而不是“对于j:= i”。


查看完整回答
反对 回复 2021-04-26
  • 1 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信