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

1 Answer

0 votes
// compute sum of digits
fn digit_sum(mut n: i64) -> i64 {
    let mut s: i64 = 0;

    while n > 0 {
        s += n % 10;
        n /= 10;
    }

    s
}

fn main() {
    let mut n: i64 = 2;

    loop {
        let s = digit_sum(n);

        // Try powers k = 2..10 (enough for reasonable ranges)
        let mut p: i64 = s * s;
        for k in 2..=10 {
            if p == n {
                println!("Found: {} = ({})^{}", n, s, k);
                return;
            }
            p *= s; // next power
        }

        n += 1;
    }
}



/*
run:

Found: 81 = (9)^2

*/

 



answered 1 day ago by avibootz

Related questions

...