ee96a818e1
- Clear the boilerplate that `mix` generated - Consume `Math.factor` to test which inputs are semiprimes - Cache all inputs that are semiprimes as soon as we discover that they are - semiprimes I considered a couple things related to the Cache: - Could save space by storing all semiprime factors in a tree. This would make the lookups more expensive. Also because the tree's depth would never exceed two (because all semiprimes only have two factors), the tree would be quite broad, and we may not be saving enough space for the trade to be worthwhile. I might be wrong about that though. - We could consider pre-computing all semiprimes when we start the app, but without running some tests firsts, I'm not sure whether or not it's worth the trouble. |
||
---|---|---|
.. | ||
server | ||
default.nix | ||
README.md |
Semiprimes Service
Introduction
A composite is a number containing at least two prime factors. For example:
15 = 3 × 5
9 = 3 × 3
12 = 2 × 2 × 3
There are ten composites below thirty containing precisely two, not necessarily
distinct, prime factors: 4, 6, 9, 10, 14, 15, 21, 22, 25, 26
. Let’s call such
numbers Semiprimes.
Task
- Write a module which provides a function to tell whether a given number,
N
, is a semiprime.N
will be 10^5. - Please implement an API (RESTful or GraphQL) to factor a given number into two prime numbers if it’s a semiprime, otherwise, return an error message.
Stretch Goals
- Handle the invalid inputs.
- Support batch requests: i.e. users could provide 100 numbers, and the API return the answer for all.
- Considering this module will be used by a long running service, could you optimize it to give answers faster?