【Go】エラステネスのふるい
func Soe(n int) []int { nums := []int{} for i := 2; i <= n; i++ { nums = append(nums, i) } pnums := []int{} sqrtVal := int(math.Sqrt(float64(n))) for true { if sqrtVal <= nums[0] { for _, v := range nums { pnums = append(pnums, v) } break } pnums = append(pnums, nums[0]) newNums := []int{} for _, v := range nums { if v%nums[0] > 0 { newNums = append(newNums, v) } } nums = newNums } return pnums }