← Home
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)
	}
}