CMU 15-112: Fundamentals of Programming and Computer Science
Quiz2b
Quiz2 Version B
See the quiz2 frontmatter.
PART 1 (10 min.)
CT1 (20 points):
Indicate what this code prints.
def ct1(x, y): for i in range(x): for j in range(i, y): if (i + j) % 3 == 1: print(j) if (i + j > 4): break elif i < 2: print(42) ct1(3, 5)
CT2 (20 points):
Indicate what this code prints.
def ct2(a, b, c): n = 0 while n < 123: print(n) n *= a n += c b, c = c, b return n print(ct2(10, 8, 6))
RC1 (10 pts):
Find an argument for rc1 that makes it return TRUE.
def rc1(x): if not isinstance(x, int): return False elif (x < 1000) or (5000 < x): return False t = 0 while x > 0: t *= 100 a = x % 10 b = (x % 100) - a x = x // 100 t += 10*a + b//10 return t == 3412
BonusCT1 [+3 points]
This is BONUS. You will not lose points for not answering or incorrectly answering this question. Indicate what this code prints.
def bonusCt1(n): (a,b,c) = (0, 1000, 100) while (c < 1000): for x in range(a, b, c): (a,b,c) = (a+1, b-1, c+50) return a-n print(bonusCt1(5))
PART 2 (10 min.)
Free Response: nthMarfPrime(n) [50 points]
Write the function nthMarfPrime(n) which returns the nth positive integer which meets the definition of a Marf Prime (a coined term). A number is a Marf Prime if:
- the number is a positive integer with at least two digits
- the number is prime
- the digits are strictly decreasing from left to right
For example, 41, 83, 761, and 983 are all Marf Primes, but the following numbers are NOT Marf Primes:
- 7 # does not have 2 digits
- 51 # not prime
- 37 # not strictly decreasing from left to right
- -41 # not positive
Hint: The smallest Marf Prime is 31
Hint: You must write isPrime (or fasterIsPrime) here.
def testNthMarfPrime(): print('Testing nthMarfPrime()...', end='') assert(nthMarfPrime(0) == 31) assert(nthMarfPrime(1) == 41) assert(nthMarfPrime(5) == 71) assert(nthMarfPrime(9) == 421) print('Passed!')