How to find the first integer equal to the sum of its digits raised to some power in Go

1 Answer

0 votes
package main

import (
    "fmt"
)

// compute sum of digits
func digitSum(n int64) int64 {
    var s int64 = 0

    for n > 0 {
        s += n % 10
        n /= 10
    }

    return s
}

func main() {
    for n := int64(2); ; n++ {
        s := digitSum(n)

        // Try powers k = 2..10 (enough for reasonable ranges)
        p := s * s
        for k := 2; k <= 10; k++ {
            if p == n {
                fmt.Printf("Found: %d = (%d)^%d\n", n, s, k)
                return
            }
            p *= s // next power
        }
    }
}


/*
run:

Found: 81 = (9)^2

*/

 



answered 1 day ago by avibootz

Related questions

...