Sketch out an algorithm for multiplying two positive numbers a and b using this technique.?

Full Question: One way to do multiplication is by repeated addition. For example, 47×2547 \times 2547×25 can be evaluated as 47+47+47+…+4747 + 47 + 47 + \ldots + 4747+47+47+…+47 (25 times). Sketch out an algorithm for multiplying two positive numbers a and b using this technique.

Need to create this into Programming Language- I did this in python wondering if someone can tell me if there's a mistake I'm not seeing?

a = int(input("Enter the multiplicand: "))

b = int(input("Enter the multiplier: "))

result = 0

if b < 0:

    count = -b

else:

    count = b

while count > 0:

    if a == 0:

        count = 0

    result += a

    count -= 1

print(result)

3 Answers

Relevance
  • 1 month ago

    Hi, Nathaniel.

    The question states "two positive numbers", so there are no negative numbers or zero.

    This makes your code very straightforward:

    a = int(input("Enter the multiplicand: "))

    b = int(input("Enter the multiplier: "))

    result = 0

    while b > 0:

        result += a

        b -= 1

    print (result)

  • EddieJ
    Lv 7
    1 month ago

    It says to multiply two POSITIVE numbers, so I don't know why you are dealing with the possibility of one of them being negative.

  • 1 month ago

    That's a good start.  Try it with a=5 and b=-4, though.  The correct answer is -20, of course, but I get:

    Enter the multiplicand: 5

    Enter the multiplier: -4

    20

    >>>

    The problem is that when you change the sign of (count), you also need to change the sign on what will be added into (result).  A simple fix is to add "a = -a" after the "count = -b" line. 

    Another option is to add an if statement after the final while loop:

        if b < 0:

            result = -result

    ...flipping the result sign after all the repeated addition is done.  I think I like this better because it doesn't modify your original input.

    A minor issue is that when you multiply 500*500 with this, you'll be testing "if a == 0:" 500 times.  You can avoid that by reversing the order of if and while at the end:

    if a != 0:

        while count > 0:

            ...same loop body, indented 1 extra level

    Now a==0 is only tested once, and no loop iterations are performed when that's true.  The (result) variable will still have the initial 0 value.

Still have questions? Get your answers by asking now.