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

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
def is_divisible_by_five(bin_str: str) -> bool:
    remainder: int = 0

    # scan each bit of the binary number
    for bit in bin_str:

        # convert '0' or '1' to integer 0 or 1
        b: int = int(bit)

        # 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_str: str = "01000110"  # 70

divisible: bool = is_divisible_by_five(bin_str)

print("Binary number:", bin_str)
print("Divisible by 5:", "yes" if divisible else "no")

"""
  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

...