CMU 15-112 Summer 2018: Fundamentals of Programming and Computer Science
Homework 2 (Due Thurs 5-Jul, at 5pm)




  1. Piazza Post [2 pts]
    Ask a question on Piazza about the homework or the course.

  2. nthCircularPrime [70 pts]
    A circular prime is an integer number with the property that any rotation of that number's digits is prime. In this case, rotation refers to cycling the digits of a number; for example, the rotations of 1234 are 1234, 2341, 3412, and 4123. You can read more about this on the Wikipedia page. Single-digit primes are all circular, of course. To find the nth circular prime, you'll need to write isPrime and three other functions:

    1. rotateNumber [20 pts]
      This function takes a non-negative integer number, x, and rotates that number's digits by one place. This would turn the number 1234 to 4123.

    2. isCircularPrime [30 pts]
      This function takes a non-negative integer number, x, and determines whether that number is a circular prime. To do this, you'll need to check whether every rotation of the number is prime.

    3. nthCircularPrime [20 pts]
      This function takes a non-negative integer number n, and returns the nth circular prime.


  3. longestDigitRun [28 pts]
    Write the function longestDigitRun(n) that takes a possibly-negative int value n and returns the digit that has the longest consecutive run, or the smallest such digit if there is a tie. So, longestDigitRun(117773732) returns 7 (because there is a run of 3 consecutive 7's), as does longestDigitRun(-677886).