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

1 Answer

0 votes
// compute sum of digits
function digitSum(int $n): int {
    $s = 0;
    
    while ($n > 0) {
        $s += $n % 10;
        $n = intdiv($n, 10);
    }
    
    return $s;
}

for ($n = 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) {
            echo "Found: $n = ($s)^$k\n";
            exit;
        }
        $p *= $s; // next power
    }
}


/*
run:

Found: 81 = (9)^2

*/

 



answered 1 day ago by avibootz

Related questions

...