CMU 15-112 Fall 2016: Fundamentals of Programming and Computer Science
Lab 2 (Due Saturday 10-Sep, at 6pm)




  1. nthEmirpsPrime(n)
    Write the function nthEmirpsPrime(n) that takes a non-negative int n and returns the nth "Emirp prime", where an Emirp prime is a prime number which becomes a different prime number when its decimal digits are reversed. For example, 13 is an Emirp prime because when we reverse the digits we get 31, which is also prime. 2, 3, 5, 7, and 11 are all examples of primes that are not Emirp primes because they are the same prime when the digits are reversed. Here are the first several Emirp primes: 13, 17, 31, 37, 71, 73, 79, 97, 107, 113, 149, 157, 167, 179, 199,... So nthEmirpsPrime(0) returns 13. Aside: in case you missed it, emirp is prime spelled backwards. Also, we didn't make this up (check out "emirp" on Wikipedia)!

  2. findZeroWithBisection(f, x0, x1, epsilon)
    Write the function findZeroWithBisection(f, x0, x1, epsilon) as described here.

  3. carrylessAdd(x, y)
    First, read the first page (page 44) from here about Carryless Arithmetic. Fun! Then, write the function carrylessAdd(x, y) that takes two non-negative integers x and y and returns their carryless sum. As the paper demonstrates, carrylessAdd(785, 376) returns 51.

  4. nthKaprekarNumber(n)
    Write the function nthKaprekarNumber(n) that takes a non-negative int n and returns the nth Kaprekar number, where a Kaprekar number is a non-negative integer, the representation of whose square can be split into two parts (where the right part is not zero) that add up to the original number again. For instance, 45 is a Kaprekar number, because 45**2 = 2025 and 20+25 = 45.

  5. integral(f, a, b, N)
    Write the function integral(f, a, b, N) as described here (see #4).