For problem statement at 0-999/400-499/440-449/449/problemC.txt this is a correct solution, but verifier at 0-999/400-499/440-449/449/verifierC.go ends with All 100 tests passed. can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func main() {
var n int
fmt.Scan(&n)
sieve := make([]bool, n+1)
for i := 2; i*i <= n; i++ {
if !sieve[i] {
for j := i * i; j <= n; j += i {
sieve[j] = true
}
}
}
used := make([]bool, n+1)
type Pair struct{ a, b int }
var pairs []Pair
for p := 3; p <= n/2; p += 2 {
if !sieve[p] {
var multiples []int
for k := p; k <= n; k += p {
if !used[k] {
multiples = append(multiples, k)
}
}
if len(multiples)%2 == 1 {
var filtered []int
for _, v := range multiples {
if v != 2*p {
filtered = append(filtered, v)
}
}
multiples = filtered
}
for i := 0; i+1 < len(multiples); i += 2 {
pairs = append(pairs, Pair{multiples[i], multiples[i+1]})
used[multiples[i]] = true
used[multiples[i+1]] = true
}
}
}
var even []int
for k := 2; k <= n; k += 2 {
if !used[k] {
even = append(even, k)
}
}
for i := 0; i+1 < len(even); i += 2 {
pairs = append(pairs, Pair{even[i], even[i+1]})
used[even[i]] = true
used[even[i+1]] = true
}
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
fmt.Fprintln(out, len(pairs))
for _, p := range pairs {
fmt.Fprintf(out, "%d %d\n", p.a, p.b)
}
}