How to find the first power of 2 whose leading digits are 12 in PHP

1 Answer

0 votes
// return true if 2^n starts with prefix, else false
function startsWithPrefix($n, $prefix) {
    $log2v = log10(2.0);

    $x = $n * $log2v;
    $frac = $x - floor($x);

    // count digits in prefix
    $buf = strval($prefix);
    $digits = strlen($buf);

    // compute leading digits
    $leading = (int) floor(pow(10, $frac + $digits - 1));

    return $leading === $prefix;
}

$prefix = 12;

for ($n = 1; ; $n++) {
    if (startsWithPrefix($n, $prefix)) {
        echo "First n = $n\n";
        echo "2 ^ $n = " . (int) pow(2, $n) . "\n";
        break;
    }
}


/*
run:

First n = 7
2 ^ 7 = 128

*/

 



answered 3 hours ago by avibootz

Related questions

...