solution: ProjectEuler-007 (#1142)

* 📦 NEW: Added solution for ProjectEuler-007

* 🐛 FIX: Spelling mistake fixes

* 👌 IMPROVE: changed variable name from `inc` to `candidateValue` and thrown error in case of invalid input

* 👌 IMPROVE: Modified the code

Co-authored-by: Omkarnath Parida <omkarnath.parida@yocket.in>
This commit is contained in:
Omkarnath Parida
2022-10-08 12:27:02 +05:30
committed by GitHub
parent 109e4a685b
commit d0e61e1f69
2 changed files with 44 additions and 0 deletions

View File

@ -0,0 +1,27 @@
import { PrimeCheck } from '../Maths/PrimeCheck.js'
/**
* Find nth Prime Number
*
* P.S.(Project Euler - 007):
* By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.
* What is the 10001st prime number?
*
* @param {Number} n
* @returns {Number} returns the nth prime number
*/
export const nthPrime = (n) => {
if (n < 1) {
throw new Error('Invalid Input')
}
let count = 0
let candidateValue = 1
while (count < n) {
candidateValue++
if (PrimeCheck(candidateValue)) {
count++
}
}
return candidateValue
}

View File

@ -0,0 +1,17 @@
import { nthPrime } from '../Problem007.js'
describe('checking nth prime number', () => {
it('should be invalid input if number is negative', () => {
expect(() => nthPrime(-3)).toThrowError('Invalid Input')
})
it('should be invalid input if number is 0', () => {
expect(() => nthPrime(0)).toThrowError('Invalid Input')
})
test('if the number is greater than 0', () => {
expect(nthPrime(10)).toBe(29)
})
// Project Euler Condition Check
test('if the number is 10001', () => {
expect(nthPrime(10001)).toBe(104743)
})
})