Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions Project-Euler/Problem007.js
Original file line number Diff line number Diff line change
@@ -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
}
17 changes: 17 additions & 0 deletions Project-Euler/test/Problem007.test.js
Original file line number Diff line number Diff line change
@@ -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)
})
})