This midterm consists of three programming problems. Turn in your code
and the printout of your test runs for each problem. Your code has to
be sufficiently tested. Your testing will be a factor in determining
your grade. You may discuss the problems with each other, but sharing
code is **strictly** prohibited (and will be ruthlessly punished).

**P1.**- Write the function
`divide`that implements integer division using only addition and subtraction. Assume the prototype`int divide (int, int)`. Your program should work the same way as C++ integer division for positive integers. For 1 point of extra credit, it should behave the same way as C++ division for*all*integer inputs. Test your function by calling it from`main()`in various integer arithmetic expressions.

**P2.**- Write a program that inputs a positive integer and
prints all of its prime divisors. If a prime divides the number several
times, print that prime as many times, i.e. the product of all primes
printed must equal the input number. After factoring a number,
your program must ask for a new number and so on, until the number
entered is negative, in which case the program exits.

**P3.**- Write a program that inputs a positive integer number
and prints that number
*in word form*. Your program must work correctly for numbers under one million. For 1 point of extra credit, make it work for numbers less than 2 billion.**Hints:**(1) Use the`switch`statement (2) Remember that numbers between 10 and 20 require special treatment.

**Examples:**

> factor 18 18: 2 3 3 25 25: 5 5 13 13: 13 159 159: 3 53 720 720: 2 2 2 2 3 3 5 2048 2048: 2 2 2 2 2 2 2 2 2 2 2 -10 Bye! > number 125 one hundred twenty-five. 12 twelve. 1200 one thousand. two hundred. 12000 twelve thousand. 12125 twelve thousand. one hundred twenty-five. 0 zero. 59 fifty-nine.