## Interview Question

Software Engineering New Grad Interview

-Palo Alto, CA

Meta## Implement division without using multiplication or division. It should work most efficient and fast.

AnswerAdd Tags

## Interview Answers

11 Answers

▲

11

▼

exp(ln(a)-ln(b))=a/b

Sapargali Kambar on

▲

3

▼

What if one or both of a,b is less than zero. ln(x) for x < 0 is not defined.

kr0y on

▲

2

▼

Obviously the interviewer would not allow us to use Math functions like exp, log etc. We are supposed to use the Long division method or the Newton Raphson method to find the quotient. Newton Raphson is the fastest but uses operator * (multiplication) though.

Vivek on

▲

1

▼

Python version that gives you an idea how it works: i = 0 while divisor = 0: if dividend >= divisor: dividend -= divisor result |= 1 >= 1 i-=1 plus some code to check for 0 and support negative values

Anonymous on

▲

0

▼

#Write a program to do division without division or multiplication 2 3 def division(dividend, divisor_initial): 4 divisor_final = divisor_initial 5 quotient = 1 6 while dividend - divisor_final > divisor_initial: 7 quotient += 1 8 divisor_final = divisor_final + divisor_initial 9 number = divisor_final - divisor_initial 10 remainder = dividend - divisor_final 11 return quotient,remainder 12 13 14 def main(): 15 print division( 101, 3) 16 17 18 if __name__ == "__main__": 19 main()

Deeksha Chugh on

▲

0

▼

http://stackoverflow.com/a/5284915

Hesh on

▲

0

▼

This solution rounds down to the nearest signed integer // Implement division without using multiplication or division. It should work most efficient and fast. int Divide(int divisor, int dividend) { int divisionCount; int tmp = dividend; if (tmp - divisor > 0) { tmp = tmp - divisor; divisionCount++; } // This will apply the correct sign to the quotient if ((divisor & 8) ^ (dividend & 8) != 0) { divisionCount = divisionCount | 8; } return divisionCount; }

PrinceBoroujerdi on

▲

0

▼

// correcting previous answer int Divide(int divisor, int dividend) { int divisionCount; int tmp = dividend; if (tmp - divisor > 0) { tmp = tmp - divisor; divisionCount++; } // This will apply the correct sign to the quotient if ((divisor & 0x80000000) ^ (dividend & 0x80000000) != 0) { divisionCount = divisionCount | 80000000; } return divisionCount; }

PrinceBoroujerdi on

▲

0

▼

public class Solution { public static void main(String[] args){ int top=32; int bottom=4; int count=0; boolean negative=(top*bottom)=bottom){ top=top-bottom; count++; } System.out.print((negative)?"-":""+String.valueOf(count)+"..."+top); } }

Edison on

▲

0

▼

can anyone post solution in java?

vishal on

▲

1

▼

we can use bit shift operator. e.g. 4 is 100 in binary we want to divide 4 by 2 so right shift 4 by 1 bit 4>>1, so we get 010 which is 2.

ashish on

## Add Answers or Comments

To comment on this, Sign In or Sign Up.