How to determine whether an n‑bit binary number is divisible by 5 in PHP

1 Answer

0 votes
// function to compute whether a binary number is divisible by 5
// it processes the bits left to right and keeps track of the remainder modulo 5
// for each bit b:
//     remainder = (remainder * 2 + b) % 5
function isDivisibleByFive(string $bin): bool {

    // remainder modulo 5 while scanning bits
    $remainder = 0;

    // scan each bit of the binary number
    for ($i = 0; $i < strlen($bin); $i++) {

        // convert '0' or '1' to integer 0 or 1
        $b = ord($bin[$i]) - ord('0');

        // update remainder using modulo arithmetic
        $remainder = ($remainder * 2 + $b) % 5;
    }

    // divisible if final remainder is zero
    return $remainder === 0;
}


// read an n-bit binary number as a string
$bin = "01000110";  // 70

$divisible = isDivisibleByFive($bin);

echo "Binary number: $bin\n";
echo "Divisible by 5: " . ($divisible ? "yes" : "no") . "\n";

/*
  Example walk-through for bin = 01000110:

  Start: remainder = 0

  bit = 0 → remainder = (0*2 + 0) % 5 = 0
  bit = 1 → remainder = (0*2 + 1) % 5 = 1
  bit = 0 → remainder = (1*2 + 0) % 5 = 2
  bit = 0 → remainder = (2*2 + 0) % 5 = 4
  bit = 0 → remainder = (4*2 + 0) % 5 = 3
  bit = 1 → remainder = (3*2 + 1) % 5 = 2
  bit = 1 → remainder = (2*2 + 1) % 5 = 0
  bit = 0 → remainder = (0*2 + 0) % 5 = 0

  Final remainder = 0 → divisible by 5
*/


/*
run:

Binary number: 01000110
Divisible by 5: yes

*/

 



answered Jun 28 by avibootz
edited Jun 28 by avibootz

Related questions

...