特定の制限を下回るすべての素数を見つけるアルゴリズムを実装しようとしています。ただし、制限に達すると、46350
突然out of range
エラー メッセージが表示されます。
panic: runtime error: index out of range
goroutine 1 [running]:
main.main()
/tmpfs/gosandbox-433...fd004/prog.go:16 +0x1a8
ここで何が間違っているかを指摘する助けがあれば幸いです(そして、この魔法の数字46350
はどこから来たのですか?)。
再現するには、次のコードをGoogle サンドボックスにドロップしてコメントを外しlimit++
ます (またはこのリンクを使用します)。
package main
func main() {
limit := 46349
//limit++
sieved_numbers := make([]bool, limit)
var j = 0
var i = 2
for ; i < limit; i++ {
if !sieved_numbers[i] {
for j = i * i; j < limit;j += i {
sieved_numbers[j] = true
}
}
}
}