tvl-depot/users/wpcarro/assessments/semiprimes
Vincent Ambo 019f8fd211 subtree(users/wpcarro): docking briefcase at '24f5a642'
git-subtree-dir: users/wpcarro
git-subtree-mainline: 464bbcb15c
git-subtree-split: 24f5a642af
Change-Id: I6105b3762b79126b3488359c95978cadb3efa789
2021-12-14 02:15:47 +03:00
..
server subtree(users/wpcarro): docking briefcase at '24f5a642' 2021-12-14 02:15:47 +03:00
.gitignore subtree(users/wpcarro): docking briefcase at '24f5a642' 2021-12-14 02:15:47 +03:00
default.nix subtree(users/wpcarro): docking briefcase at '24f5a642' 2021-12-14 02:15:47 +03:00
README.md subtree(users/wpcarro): docking briefcase at '24f5a642' 2021-12-14 02:15:47 +03:00

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. Lets 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 less than 100,000
  • Please implement an API (RESTful or GraphQL) to factor a given number into two prime numbers if its 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?

Usage

To run the application you'll need to have elixir installed. Assuming elixir is already installed, consult the following steps to start the application:

$ cd server
$ mix deps.get
$ iex -S mix

Now open a web browser and visit http://localhost:8080!