From 85780e04817f518e403ed9ea50577a0285afe038 Mon Sep 17 00:00:00 2001 From: Chris Hallberg Date: Thu, 4 Dec 2025 13:05:38 -0500 Subject: [PATCH 1/2] test: remove unnecessary and slow second check --- Project-Euler/test/Problem044.test.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/Project-Euler/test/Problem044.test.js b/Project-Euler/test/Problem044.test.js index b3522a7884..0e5b60cb2a 100644 --- a/Project-Euler/test/Problem044.test.js +++ b/Project-Euler/test/Problem044.test.js @@ -1,18 +1,15 @@ import { problem44 } from '../Problem044.js' -describe('checking nth prime number', () => { +describe('Project Euler 044 - Pentagon numbers', () => { test('should be invalid input if number is negative', () => { expect(() => problem44(-3)).toThrowError('Invalid Input') }) + test('should be invalid input if number is 0', () => { expect(() => problem44(0)).toThrowError('Invalid Input') }) - // Project Euler Condition Check - test('if the number is greater or equal to 1', () => { + + test('solves the problem', () => { expect(problem44(1)).toBe(5482660) }) - // Project Euler Second Value for Condition Check - test('if the number is greater or equal to 2167', () => { - expect(problem44(2167)).toBe(8476206790) - }) }) From 334cab4554be2acc1dda413545b46c7dad1e40db Mon Sep 17 00:00:00 2001 From: Chris Hallberg Date: Tue, 16 Dec 2025 12:10:55 -0500 Subject: [PATCH 2/2] feat(euler44): look ahead checking saves iterations --- Project-Euler/Problem044.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Project-Euler/Problem044.js b/Project-Euler/Problem044.js index 7ffc0dbb6e..5ab160a009 100644 --- a/Project-Euler/Problem044.js +++ b/Project-Euler/Problem044.js @@ -22,9 +22,17 @@ function problem44(k) { for (let j = k - 1; j > 0; j--) { const m = (j * (3 * j - 1)) / 2 // calculate all Pj < Pk - if (isPentagonal(n - m) && isPentagonal(n + m)) { - // Check sum and difference - return n - m // return D + // Check forward, checking n - m doubles work from previous iterations + const sum = n + m + if (isPentagonal(sum)) { + // Check sum - m = n + if (isPentagonal(sum + m)) { + return n // return D + } + // Check sum - n = m + if (isPentagonal(sum + n)) { + return m // return D + } } } }