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

1 Answer

0 votes
# compute sum of digits
def digitSum(n):
    s = 0

    while n > 0:
        s += n % 10
        n //= 10

    return s


def main():
    n = 2
    while True:
        s = digitSum(n)

        # Try powers k = 2..10 (enough for reasonable ranges)
        p = s * s
        for k in range(2, 11):
            if p == n:
                print(f"Found: {n} = ({s})^{k}")
                return
            p *= s  # next power

        n += 1


main()


"""
run:

Found: 81 = (9)^2

"""

 



answered 2 days ago by avibootz

Related questions

...