package cap3 func Ex26(n int) []int { lights := make([]bool, n) // 默认值false,实际上意味着第一个人已经把所有灯关了,没必要再操作一遍 // 第i个人,从第二个人开始 for i := 2; i <= n; i++ { // 编号为i的倍数的灯状态取反 for j := 1; i*j <= n; j++ { lights[i*j-1] = !lights[i*j-1] } } result := make([]int, 0, n) for light, on := range lights { if on { result = append(result, light+1) } } return result }