// 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
*/