From 92a81a2290613f91471c6ba1e34f0a905eb1b049 Mon Sep 17 00:00:00 2001 From: Exortions <75327059+Exortions@users.noreply.github.com> Date: Fri, 27 May 2022 08:58:45 -0700 Subject: [PATCH] merge: Add Twin Primes algorithm (#1024) * Create TwinPrime.js * Update TwinPrime.js * Create TwinPrime.test.js * Update TwinPrime.js * Update TwinPrime.js * Add suggestions * Update TwinPrime.test.js * Update TwinPrime.js * Styling --- Maths/TwinPrime.js | 29 +++++++++++++++++++++++++++++ Maths/test/TwinPrime.test.js | 10 ++++++++++ 2 files changed, 39 insertions(+) create mode 100644 Maths/TwinPrime.js create mode 100644 Maths/test/TwinPrime.test.js diff --git a/Maths/TwinPrime.js b/Maths/TwinPrime.js new file mode 100644 index 000000000..871b1eab7 --- /dev/null +++ b/Maths/TwinPrime.js @@ -0,0 +1,29 @@ +import { PrimeCheck } from './PrimeCheck' + +/** + * @function twinPrime + * Gets the 'twin prime' of a prime number. + * + * @param {Integer} n The number to find the twin prime of. + * @returns {Integer} Either the twin, or -1 if n or n + 2 is not prime. + * + * @see https://en.wikipedia.org/wiki/Twin_prime + * + * @example twinPrime(5) = 7 + * @example twinPrime(4) = -1 +*/ +function twinPrime (n) { + const prime = PrimeCheck(n) + + if (!prime) { + return -1 + } + + if (!PrimeCheck(n + 2)) { + return -1 + } + + return n + 2 +} + +export { twinPrime } diff --git a/Maths/test/TwinPrime.test.js b/Maths/test/TwinPrime.test.js new file mode 100644 index 000000000..c3e057e10 --- /dev/null +++ b/Maths/test/TwinPrime.test.js @@ -0,0 +1,10 @@ +import { twinPrime } from '../TwinPrime.js' + +describe('Twin Primes', () => { + it('Should be valid twin primes', () => { + expect(twinPrime(3)).toBe(5) + expect(twinPrime(5)).toBe(7) + expect(twinPrime(4)).toBe(-1) + expect(twinPrime(17)).toBe(19) + }) +})