Self-check exercise: User-defined functions
-
Write a function
aprime(m)
that has an input parameter m. Function aprime(m) returns 1 if m
is prime, and 0 otherwise. Remember to write a concise comment to describe the function, including
its parameters under the function header.
-
A twin prime is a pair of primes such that if p is a prime, p+2 is also a prime. The larger prime
in the pair is called the big prime, while the smaller prime is called the little prime. For example, in the
twin prime pair (3,5), 5 is the big prime while 3 is the little prime. Write a function
lastTwinPair(n)
that will, given a number n greater than or equal to 3, return the last (largest) twin prime pair smaller
than or equal to n. Use function aprime
from the previous question! This function returns two values!
-
Write a function
vectorQuery(v,n,r)
to determine whether the number r appears in the first n
cells of vector v
. The function returns 1 if r
is in the first n
cells of v
and 0 otherwise. Your function assumes that v
is a vector of numbers, n
is a positive integer, and r
is a number. Use a loop to do the search. Make sure that the loop
index does not go out of bounds (if n is greater than the length of vector v).
-
How many rolls of a fair die does one need to accumulate at least 20 points? Of course one needs at least 4 rolls (as in 6 + 6 + 6 + 2 or 6 + 5 + 4 + 5) and at most 20 rolls (getting 20 1's in a row). However these sittuations are rather unlikely! Hence, we ask ourselves: what is the most likely number of times that one has to roll a die?
Write a program to answer this question.
- First write a function
rollsUntil(p)
that simulates
one experiment run, i.e. rolling the die several times until
at least p
points have been accumulated and counting how
many times the die was rolled. The function should return the required
number of rolls.
- Test this function.
- Then write a script that calls the function
rollsUntil(p)
, with p = 20
, many times (say
10000).
- Use an array
counts
to summarize the results, as
follows. Start with counts
being a vector of zeros of
length 20. After each run, increment component counts(n)
by one, if the run took n
rolls of the die.
- After running your program,
sum(counts)
should equal
10000 (the total number of runs) and [maxcount, maxn] =
max(counts)
will yield the maximum count and the value of
n
for which this count is obtained. Thus,
maxn
will be the most likely number of rolls of the die to get
20 points.