From 086fc67ecc97bb0856be4c277741f46f5ddb83b8 Mon Sep 17 00:00:00 2001 From: Sotisi Date: Mon, 13 May 2019 12:58:18 +0200 Subject: [PATCH] Fixed O(n) runtime of "Find Largest Prime Factor" for high primes to 0(sqrt(n)). --- src/data/codingcontracttypes.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/data/codingcontracttypes.ts b/src/data/codingcontracttypes.ts index 30ad69963..22a045024 100644 --- a/src/data/codingcontracttypes.ts +++ b/src/data/codingcontracttypes.ts @@ -65,16 +65,15 @@ export const codingContractTypesMetadata: ICodingContractTypeMetadata[] = [ solver: (data: number, ans: string) => { let fac: number = 2; let n: number = data; - while (n > fac) { - if (n % fac === 0) { + while (Math.sqrt(n) > fac-1) { + while (n % fac === 0) { n = Math.round(n / fac); - fac = 2; } else { ++fac; } } - return fac === parseInt(ans, 10); + return (n===1?(fac-1):n) === parseInt(ans, 10); }, }, {