## Description

MATH6015

Math Programming Assignment #2

1. [30 points] Write a function that computes the exact value of n!.

(a) The function must be named factorial verbatim.

(b) The function must take a single non-negative integer as input and return a single integer as output.

Note that 0! = 1.

(c) Do not use Stirling’s formulause the exact denition of factorial.

(d) Do NOT use the factorial function from any libraryyou must write your own!

2. [30 points] Write a function that determines if a positive integer is a decimal narcissistic number. A

positive, N-digit integer x written in base-10 (decimal), represented by

x = dN−1 × 10N−1 + dN−2 × 10N−2 + . . . + a2 × 102 + d1 × 101 + d0 × 100

,

is decimal narcissistic if

d

N

N−1 + d

N

N−2 + . . . + d

N

2 + d

N

1 + d

N

0 = x.

For example, all positive, single-digit integers less than ten are decimal narcissistic. Also, 153 is decimal

narcissistic since

153 = 1 × 102 + 5 × 101 + 3 × 100 = 13 + 53 + 33

.

(a) The function must be named is_narcissistic verbatim.

(b) The function must take a single non-negative integer as input and return a boolean True/False as

output.

3. [30 points] Using your is_narcissistic function (do NOT rewrite or copy/paste your code), write a

function that returns the rst N decimal narcissistic numbers starting with 1.

(a) The function must be named find_narcissistic verbatim.

(b) The function must take a single non-negative integer N as input and return a list of the N integers.

4. [30 points] Write a function that estimates the value of π to twelve decimal places using the xed-point

iteration,

xn+1 = xn + sin (xn),

using the initial guess x0 = 3.

(a) The function must be named compute_pi verbatim.

(b) The function will not take any parameters and will return a oating-point number as output.

(c) Do NOT use the denition of π from any libraryyou must write your own!

MATH6015 Page 1/1