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

1 Answer

0 votes
#include <iostream>
#include <string>

// 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
bool isDivisibleByFive(const std::string& bin) {
    int remainder = 0;

    // scan each bit of the binary number
    for (char bit : bin) {
        // convert '0' or '1' to integer 0 or 1
        int b = bit - '0';

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

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

int main() {
    // read an n-bit binary number as a string
    std::string bin = "01000110";  // 70

    bool divisible = isDivisibleByFive(bin);

    std::cout << "Binary number: " << bin << std::endl;
    std::cout << "Divisible by 5: " << (divisible ? "yes" : "no") << std::endl;

    /*
      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 27 by avibootz
edited Jun 27 by avibootz

Related questions

...