Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Semrush - keyword research tool

Create your online store today with Shopify

Turn ChatGPT, Claude, Gemini, And CoPilot Into Your Personal Assistant, Business Coach, Content Creator, And More

AFFILIATE MARKETING Your all-in-one performance engine Manage affiliates, creators, and customer referrals in one unified platform—turning every partnership into measurable growth

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Disclosure: My content contains affiliate links.

43,236 questions

56,139 answers

573 users

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

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)
  # remainder modulo 5 while scanning bits
  remainder = 0

  # scan each bit of the binary number
  bin.each_char do |bit|
    # convert '0' or '1' to integer 0 or 1
    b = bit.ord - '0'.ord

    # update remainder using modulo arithmetic
    remainder = (remainder * 2 + b) % 5
  end

  # divisible if final remainder is zero
  remainder == 0
end

# read an n-bit binary number as a string
bin = "01000110"  # 70

divisible = is_divisible_by_five(bin)

puts "Binary number: #{bin}"
puts "Divisible by 5: #{divisible ? 'yes' : 'no'}"

=begin
  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
=end



=begin
run:

Binary number: 01000110
Divisible by 5: yes

=end

 



answered Jun 28 by avibootz

Related questions

...