太多的结果导致欧拉计画#145的循环

I am trying to create a solution for Project Euler #145. I am writing in Go. When I run my program I get a result of 125. The expected result is 120. I have 2 different ways I have tried to write the code but both come up with the same answer. Any help pointing out my error would be appreciated.

Code option #1 using strings:

package main

import (
    "fmt"
    "strconv"
)

//checks to see if all the digits in the number are odd
func is_Odd(sum int) bool {
    intString := strconv.Itoa(sum)

    for x := len(intString); x > 0; x-- {
        newString := intString[x-1]
        if newString%2 == 0 {
            return false
        }
    }
    return true
}

//reverse the number passed
func reverse_int(value int) int {

    intString := strconv.Itoa(value)

    newString := ""

    for x := len(intString); x > 0; x-- {
        newString += string(intString[x-1])
    }

    newInt, err := strconv.Atoi(newString)

    if err != nil {
        fmt.Println("Error converting string to int")
    }

    return newInt
}

//adds 2 int's passed to it and returns an int
func add(x int, y int) int {
    return x + y
}

func main() {
    //functions test code
    /*y := 35
      x := reverse_int(y)
      z := add(x,y)
      fmt.Println(is_Odd(z))*/

    counter := 1

    for i := 1; i < 1000; i++ {
        flipped := reverse_int(i)
        sum := add(flipped, i)
        oddCheck := is_Odd(sum)
        if oddCheck {
            fmt.Println(counter, ":", i, "+", flipped, "=", sum)
            counter++
        }
    }
    counter--
    fmt.Println("total = ", counter)

}

Code option #2 using only ints:

package main

import (
    "fmt"
)

var counter int

//breaks down an int number by number and checks to see if
//all the numbers in the int are odd
func is_Odd(n int) bool {

    for n > 0 {
        remainder := n % 10
        if remainder%2 == 0 {
            return false
        }
        n /= 10
    }
    return true
}

//adds 2 int's passed to it and returns an int
func add(x int, y int) int {
    return x + y
}

//reverses the int passed to it and returns an int
func reverse_int(n int) int {
    var new_int int
    for n > 0 {
        remainder := n % 10
        new_int *= 10
        new_int += remainder
        n /= 10
    }
    return new_int
}

func main() {
    //functions test code
    /*y := 35
      x := reverse_int(y)
      z := add(x,y)
      fmt.Println(is_Odd(z))*/

    counter = 1

    for i := 1; i < 1000; i++ {
        flipped := reverse_int(i)
        sum := add(flipped, i)
        oddCheck := is_Odd(sum)
        if oddCheck {
            //fmt.Println(counter,":",i,"+",flipped,"=",sum)
            counter++
        }
    }
    counter--
    fmt.Println(counter)

}

Leading zeroes are not allowed in either n or reverse(n) so in reverse(n int) int remove Leading zeroes like so:

remainder := n % 10
if first {
    if remainder == 0 {
        return 0
    }
    first = false
}

try this:

package main

import (
    "fmt"
)

//breaks down an int number by number and checks to see if
//all the numbers in the int are odd
func isOdd(n int) bool {
    if n <= 0 {
        return false
    }
    for n > 0 {
        remainder := n % 10
        if remainder%2 == 0 {
            return false
        }
        n /= 10
    }
    return true
}

//adds 2 int's passed to it and returns an int
func add(x int, y int) int {
    return x + y
}

//reverses the int passed to it and returns an int
func reverse(n int) int {
    first := true
    t := 0
    for n > 0 {
        remainder := n % 10
        if first {
            if remainder == 0 {
                return 0
            }
            first = false
        }
        t *= 10
        t += remainder
        n /= 10
    }
    return t
}

func main() {
    counter := 0
    for i := 0; i < 1000; i++ {
        flipped := reverse(i)
        if flipped == 0 {
            continue
        }
        sum := add(flipped, i)
        if isOdd(sum) {
            counter++
            //fmt.Println(counter, ":", i, "+", flipped, "=", sum)
        }
    }
    fmt.Println(counter)
}

output:

120

Some positive integers n have the property that the sum [ n + reverse(n) ] consists entirely of odd (decimal) digits. For instance, 36 + 63 = 99 and 409 + 904 = 1313. We will call such numbers reversible; so 36, 63, 409, and 904 are reversible. Leading zeroes are not allowed in either n or reverse(n).

All digits of the sum must all be odd.

Try this one: https://play.golang.org/p/aUlvKrb9SB

(i've used one of your function if you don't mind)

You're ignoring this part of the criteria:

Leading zeroes are not allowed in either n or reverse(n).

Five of the numbers you count as reversible end in 0. (That means their reverse has a leading zero.) Stop counting those as reversible and you're done.