mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-06 09:28:26 +08:00
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:
27
Project-Euler/Problem007.js
Normal file
27
Project-Euler/Problem007.js
Normal 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
|
||||
}
|
17
Project-Euler/test/Problem007.test.js
Normal file
17
Project-Euler/test/Problem007.test.js
Normal 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)
|
||||
})
|
||||
})
|
Reference in New Issue
Block a user