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) + }) +})