← Home
For problem statement at 1000-1999/1000-1099/1010-1019/1017/problemF.txt this is a correct solution, but verifier at 1000-1999/1000-1099/1010-1019/1017/verifierF.go ends with All tests passed can you fix the verifier? ```go
package main

import (
	"fmt"
	"math"
)

func main() {
	var n, A, B, C, D uint32
	_, err := fmt.Scan(&n, &A, &B, &C, &D)
	if err != nil {
		return
	}

	if n == 0 {
		fmt.Println(0)
		return
	}

	var ans uint32 = 0

	limit := int(math.Sqrt(float64(n))) + 1
	isPrime := make([]bool, limit+1)
	for i := 2; i <= limit; i++ {
		isPrime[i] = true
	}
	basePrimes := make([]int, 0, limit/2)
	for p := 2; p <= limit; p++ {
		if isPrime[p] {
			basePrimes = append(basePrimes, p)
			for i := p * p; i <= limit; i += p {
				isPrime[i] = false
			}
		}
	}

	nextMultiple := make([]int, len(basePrimes))
	for i, p := range basePrimes {
		nextMultiple[i] = p * p
	}

	S := int(131072)
	block := make([]bool, S)

	for L := 2; L <= int(n); L += S {
		R := L + S - 1
		if R > int(n) {
			R = int(n)
		}

		length := R - L + 1
		for i := 0; i < length; i++ {
			block[i] = true
		}

		for i, p := range basePrimes {
			if p*p > R {
				break
			}
			j := nextMultiple[i]
			for ; j <= R; j += p {
				block[j-L] = false
			}
			nextMultiple[i] = j
		}

		for i := 0; i < length; i++ {
			if block[i] {
				p := uint32(L + i)
				count := uint32(0)
				power := p
				for {
					count += n / power
					if n/power < p {
						break
					}
					power *= p
				}
				fp := A*p*p*p + B*p*p + C*p + D
				ans += count * fp
			}
		}
	}

	fmt.Println(ans)
}
```