From 13b7c244790a2da99fbd91f01bfe321d84bd02fb Mon Sep 17 00:00:00 2001 From: tehliang Date: Mon, 25 Jul 2022 11:39:32 +0800 Subject: [PATCH 1/8] Added Composite Number --- Maths/IsCompositeNumber.js | 30 ++++++++++++++++++++++++++++ Maths/test/IsCompositeNumber.test.js | 15 ++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 Maths/IsCompositeNumber.js create mode 100644 Maths/test/IsCompositeNumber.test.js diff --git a/Maths/IsCompositeNumber.js b/Maths/IsCompositeNumber.js new file mode 100644 index 0000000000..ee420d66e3 --- /dev/null +++ b/Maths/IsCompositeNumber.js @@ -0,0 +1,30 @@ +/* + * Composite number: https://en.wikipedia.org/wiki/Composite_number + * function isCompositeNumber + * Check if a given number is a composite number or not? + * isCompositeNumber(6) // returns true + * isCompositeNumber(577) // returns false + * isCompositeNumber(2024) // returns true + * A composite number is a positive integer that is not prime. In other words, it has a positive divisor other than one or itself. + * First few composite numbers are 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, ……… + * Every integer greater than one is either a prime number or a composite number. + * The number one is a unit – it is neither prime nor composite. + */ + +function isCompositeNumber (number) { + let i = 1 + let count = 0 + while (number >= i) { + if (number % i === 0) { + count++ + } + i++ + } + if (count > 2) { + return true + } else { + return false + } +} + +export { isCompositeNumber } diff --git a/Maths/test/IsCompositeNumber.test.js b/Maths/test/IsCompositeNumber.test.js new file mode 100644 index 0000000000..1122d44651 --- /dev/null +++ b/Maths/test/IsCompositeNumber.test.js @@ -0,0 +1,15 @@ +import { isCompositeNumber } from '../IsCompositeNumber' + +describe('Testing isCompositeNumber function', () => { + it('should return true if the number is composite number', () => { + expect(isCompositeNumber(6)).toBe(true) + }) + + it('should return false if the number is not composite number', () => { + expect(isCompositeNumber(577)).toBe(false) + }) + + it('should return true if the number is composite number', () => { + expect(isCompositeNumber(2024)).toBe(true) + }) +}) From 4d12b5161a49ab16bb79a54cace25618cd679924 Mon Sep 17 00:00:00 2001 From: tehliang Date: Tue, 26 Jul 2022 20:50:57 +0800 Subject: [PATCH 2/8] Updated isCompositeNumber Updated isCompositeNumber with a different approach --- Maths/IsCompositeNumber.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Maths/IsCompositeNumber.js b/Maths/IsCompositeNumber.js index ee420d66e3..82110f2109 100644 --- a/Maths/IsCompositeNumber.js +++ b/Maths/IsCompositeNumber.js @@ -9,22 +9,22 @@ * First few composite numbers are 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, ……… * Every integer greater than one is either a prime number or a composite number. * The number one is a unit – it is neither prime nor composite. + * Reference: https://www.geeksforgeeks.org/composite-number/ */ function isCompositeNumber (number) { - let i = 1 - let count = 0 - while (number >= i) { - if (number % i === 0) { - count++ - } - i++ - } - if (count > 2) { - return true - } else { - return false + // Condition that can immediate skip: + // Corner cases + if (number <= 1) return false + if (number <= 3) return false + // middle five numbers in below loop + if (number % 2 === 0 || number % 3 === 0) return true + + for (let i = 5; i * i <= number; i = i + 6) { + if (number % i === 0 || number % (i + 2) === 0) { return true } } + + return false } export { isCompositeNumber } From ccc7ff70016f80424c0a00aa018259d07755be74 Mon Sep 17 00:00:00 2001 From: tehliang Date: Tue, 26 Jul 2022 20:59:59 +0800 Subject: [PATCH 3/8] Updated IsCompositeNumber 2 Update some comment --- Maths/IsCompositeNumber.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Maths/IsCompositeNumber.js b/Maths/IsCompositeNumber.js index 82110f2109..19328006ee 100644 --- a/Maths/IsCompositeNumber.js +++ b/Maths/IsCompositeNumber.js @@ -13,11 +13,11 @@ */ function isCompositeNumber (number) { - // Condition that can immediate skip: + // Conditions that can immediate skip: // Corner cases if (number <= 1) return false if (number <= 3) return false - // middle five numbers in below loop + // Middle five numbers in below loop if (number % 2 === 0 || number % 3 === 0) return true for (let i = 5; i * i <= number; i = i + 6) { From 9672cb58cb4e7216edb31b818e9c9d0d42db22ec Mon Sep 17 00:00:00 2001 From: tehliang Date: Tue, 26 Jul 2022 21:02:02 +0800 Subject: [PATCH 4/8] Updated IsCompositeNumber.js Updated comments again --- Maths/IsCompositeNumber.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Maths/IsCompositeNumber.js b/Maths/IsCompositeNumber.js index 19328006ee..df9da75e5d 100644 --- a/Maths/IsCompositeNumber.js +++ b/Maths/IsCompositeNumber.js @@ -13,7 +13,7 @@ */ function isCompositeNumber (number) { - // Conditions that can immediate skip: + // Conditions that can immediate gain result: // Corner cases if (number <= 1) return false if (number <= 3) return false From 205246e1cd9d97d2ab38e0d5857707fbab111b35 Mon Sep 17 00:00:00 2001 From: tehliang Date: Thu, 28 Jul 2022 18:06:54 +0800 Subject: [PATCH 5/8] Update IsCompositeNumber.js --- Maths/IsCompositeNumber.js | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/Maths/IsCompositeNumber.js b/Maths/IsCompositeNumber.js index df9da75e5d..3981c201f0 100644 --- a/Maths/IsCompositeNumber.js +++ b/Maths/IsCompositeNumber.js @@ -9,22 +9,12 @@ * First few composite numbers are 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, ……… * Every integer greater than one is either a prime number or a composite number. * The number one is a unit – it is neither prime nor composite. - * Reference: https://www.geeksforgeeks.org/composite-number/ */ -function isCompositeNumber (number) { - // Conditions that can immediate gain result: - // Corner cases - if (number <= 1) return false - if (number <= 3) return false - // Middle five numbers in below loop - if (number % 2 === 0 || number % 3 === 0) return true - - for (let i = 5; i * i <= number; i = i + 6) { - if (number % i === 0 || number % (i + 2) === 0) { return true } - } +import { PrimeCheck } from './PrimeCheck' - return false +function isCompositeNumber (number) { + return number > 1 && !PrimeCheck(number) } export { isCompositeNumber } From 9cb16dfffbb102d5605c55629e30bb098878e80a Mon Sep 17 00:00:00 2001 From: tehliang Date: Tue, 2 Aug 2022 21:19:08 +0800 Subject: [PATCH 6/8] Krishnamurthy_number --- Maths/IsCompositeNumber.js | 20 ----------------- Maths/IsKrishnamurthyNumber.js | 32 ++++++++++++++++++++++++++++ Maths/test/IsCompositeNumber.test.js | 2 +- 3 files changed, 33 insertions(+), 21 deletions(-) delete mode 100644 Maths/IsCompositeNumber.js create mode 100644 Maths/IsKrishnamurthyNumber.js diff --git a/Maths/IsCompositeNumber.js b/Maths/IsCompositeNumber.js deleted file mode 100644 index 3981c201f0..0000000000 --- a/Maths/IsCompositeNumber.js +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Composite number: https://en.wikipedia.org/wiki/Composite_number - * function isCompositeNumber - * Check if a given number is a composite number or not? - * isCompositeNumber(6) // returns true - * isCompositeNumber(577) // returns false - * isCompositeNumber(2024) // returns true - * A composite number is a positive integer that is not prime. In other words, it has a positive divisor other than one or itself. - * First few composite numbers are 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, ……… - * Every integer greater than one is either a prime number or a composite number. - * The number one is a unit – it is neither prime nor composite. - */ - -import { PrimeCheck } from './PrimeCheck' - -function isCompositeNumber (number) { - return number > 1 && !PrimeCheck(number) -} - -export { isCompositeNumber } diff --git a/Maths/IsKrishnamurthyNumber.js b/Maths/IsKrishnamurthyNumber.js new file mode 100644 index 0000000000..75d57531f0 --- /dev/null +++ b/Maths/IsKrishnamurthyNumber.js @@ -0,0 +1,32 @@ +/* + * Krishnamurthy number: https://www.javatpoint.com/krishnamurthy-number-java#:~:text=Krishnamurthy%20number%20is%20another%20special,to%20as%20a%20Strong%20number. + * function isKrishnamurthyNumber + * Check if a given number is a Krishnamurthy number or not? + * If the factorial sum of all a number's digits equals that number, the number is said to be Krishnamurthy. + * A Strong number is another name for the Krishnamurthy number. + * For instance 145, sum of factorial of each digits: 1! + 4! + 5! = 1 + 24 + 120 = 145 + * isCompositeNumber(6) // returns true + * isCompositeNumber(577) // returns false + * isCompositeNumber(2024) // returns true + */ + +function isKrishnamurthyNumber (number) { + +// Function to find Factorial of a number + function factorial(number) +{ + let fact = 1; + + while (n != 0) + { + fact = fact * n; + n--; + } + + return fact; +} + + return number > 1 && !PrimeCheck(number) +} + +export { isKrishnamurthyNumber } diff --git a/Maths/test/IsCompositeNumber.test.js b/Maths/test/IsCompositeNumber.test.js index 1122d44651..4dc6e9ef67 100644 --- a/Maths/test/IsCompositeNumber.test.js +++ b/Maths/test/IsCompositeNumber.test.js @@ -1,4 +1,4 @@ -import { isCompositeNumber } from '../IsCompositeNumber' +import { isCompositeNumber } from '../IsKrishnamurthyNumber' describe('Testing isCompositeNumber function', () => { it('should return true if the number is composite number', () => { From dc9335018cbf875ab5aba84d7f6112901299d3a9 Mon Sep 17 00:00:00 2001 From: tehliang Date: Tue, 2 Aug 2022 22:21:24 +0800 Subject: [PATCH 7/8] Added Juggler Sequence --- Maths/IsKrishnamurthyNumber.js | 32 -------------------------- Maths/JugglerSequence.js | 34 ++++++++++++++++++++++++++++ Maths/test/IsCompositeNumber.test.js | 15 ------------ Maths/test/JugglerSequence.test.js | 21 +++++++++++++++++ 4 files changed, 55 insertions(+), 47 deletions(-) delete mode 100644 Maths/IsKrishnamurthyNumber.js create mode 100644 Maths/JugglerSequence.js delete mode 100644 Maths/test/IsCompositeNumber.test.js create mode 100644 Maths/test/JugglerSequence.test.js diff --git a/Maths/IsKrishnamurthyNumber.js b/Maths/IsKrishnamurthyNumber.js deleted file mode 100644 index 75d57531f0..0000000000 --- a/Maths/IsKrishnamurthyNumber.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Krishnamurthy number: https://www.javatpoint.com/krishnamurthy-number-java#:~:text=Krishnamurthy%20number%20is%20another%20special,to%20as%20a%20Strong%20number. - * function isKrishnamurthyNumber - * Check if a given number is a Krishnamurthy number or not? - * If the factorial sum of all a number's digits equals that number, the number is said to be Krishnamurthy. - * A Strong number is another name for the Krishnamurthy number. - * For instance 145, sum of factorial of each digits: 1! + 4! + 5! = 1 + 24 + 120 = 145 - * isCompositeNumber(6) // returns true - * isCompositeNumber(577) // returns false - * isCompositeNumber(2024) // returns true - */ - -function isKrishnamurthyNumber (number) { - -// Function to find Factorial of a number - function factorial(number) -{ - let fact = 1; - - while (n != 0) - { - fact = fact * n; - n--; - } - - return fact; -} - - return number > 1 && !PrimeCheck(number) -} - -export { isKrishnamurthyNumber } diff --git a/Maths/JugglerSequence.js b/Maths/JugglerSequence.js new file mode 100644 index 0000000000..5dba98c0a5 --- /dev/null +++ b/Maths/JugglerSequence.js @@ -0,0 +1,34 @@ +/* + * Juggler Sequence: https://en.wikipedia.org/wiki/Juggler_sequence + * function jugglerSequence + * Juggler Sequence is a series of integer number in which the first term starts with a positive integer number n + * and the remaining terms are generated from the immediate previous term using the recurrence relation + * Produce Juggler Sequence using number n as the first term of the sequence and store in an array + * Reference: https://www.geeksforgeeks.org/juggler-sequence/ + * jugglerSequence(3) // returns [3, 5, 11, 36, 6, 2, 1 ] + * isCompositeNumber(9) // returns [9, 27, 140, 11, 36, 6, 2, 1] + * isCompositeNumber(15) // returns [15, 58, 7, 18, 4, 2, 1] + */ + +function jugglerSequence (n) { + const sequence = [] + let a = n + sequence.push(n) + // Calculate terms until last term is not 1 + while (a !== 1) { + let b = 0 + // Check if previous term is even or odd + if (a % 2 === 0) { + // calculate next term + b = Math.floor(Math.sqrt(a)) + } else { + // for odd previous term calculate next term + b = Math.floor(Math.sqrt(a) * Math.sqrt(a) * Math.sqrt(a)) + } + sequence.push(b) + a = b + } + return sequence +} + +export { jugglerSequence } diff --git a/Maths/test/IsCompositeNumber.test.js b/Maths/test/IsCompositeNumber.test.js deleted file mode 100644 index 4dc6e9ef67..0000000000 --- a/Maths/test/IsCompositeNumber.test.js +++ /dev/null @@ -1,15 +0,0 @@ -import { isCompositeNumber } from '../IsKrishnamurthyNumber' - -describe('Testing isCompositeNumber function', () => { - it('should return true if the number is composite number', () => { - expect(isCompositeNumber(6)).toBe(true) - }) - - it('should return false if the number is not composite number', () => { - expect(isCompositeNumber(577)).toBe(false) - }) - - it('should return true if the number is composite number', () => { - expect(isCompositeNumber(2024)).toBe(true) - }) -}) diff --git a/Maths/test/JugglerSequence.test.js b/Maths/test/JugglerSequence.test.js new file mode 100644 index 0000000000..99ee5b4660 --- /dev/null +++ b/Maths/test/JugglerSequence.test.js @@ -0,0 +1,21 @@ +import { jugglerSequence } from '../JugglerSequence' + +describe('Testing isCompositeNumber function', () => { + it('should return [3, 5, 11, 36, 6, 2, 1 ] if the number is 3', () => { + expect(jugglerSequence(3)).toEqual( + expect.arrayContaining([3, 5, 11, 36, 6, 2, 1]) + ) + }) + + it('should return [9, 27, 140, 11, 36, 6, 2, 1] if the number is 9', () => { + expect(jugglerSequence(9)).toEqual( + expect.arrayContaining([9, 27, 140, 11, 36, 6, 2, 1]) + ) + }) + + it('should return [15, 58, 7, 18, 4, 2, 1] if the number is 15', () => { + expect(jugglerSequence(15)).toEqual( + expect.arrayContaining([15, 58, 7, 18, 4, 2, 1]) + ) + }) +}) From 9e5ec870e957774623be0f324fba458d61916025 Mon Sep 17 00:00:00 2001 From: tehliang Date: Wed, 3 Aug 2022 09:54:05 +0800 Subject: [PATCH 8/8] Updated JugglerSequence --- Maths/JugglerSequence.js | 20 +++++--------------- Maths/test/JugglerSequence.test.js | 2 +- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/Maths/JugglerSequence.js b/Maths/JugglerSequence.js index 5dba98c0a5..96a2a35150 100644 --- a/Maths/JugglerSequence.js +++ b/Maths/JugglerSequence.js @@ -6,27 +6,17 @@ * Produce Juggler Sequence using number n as the first term of the sequence and store in an array * Reference: https://www.geeksforgeeks.org/juggler-sequence/ * jugglerSequence(3) // returns [3, 5, 11, 36, 6, 2, 1 ] - * isCompositeNumber(9) // returns [9, 27, 140, 11, 36, 6, 2, 1] - * isCompositeNumber(15) // returns [15, 58, 7, 18, 4, 2, 1] + * jugglerSequence(9) // returns [9, 27, 140, 11, 36, 6, 2, 1] + * jugglerSequence(15) // returns [15, 58, 7, 18, 4, 2, 1] */ function jugglerSequence (n) { const sequence = [] - let a = n sequence.push(n) // Calculate terms until last term is not 1 - while (a !== 1) { - let b = 0 - // Check if previous term is even or odd - if (a % 2 === 0) { - // calculate next term - b = Math.floor(Math.sqrt(a)) - } else { - // for odd previous term calculate next term - b = Math.floor(Math.sqrt(a) * Math.sqrt(a) * Math.sqrt(a)) - } - sequence.push(b) - a = b + while (n !== 1) { + n = Math.floor(n ** ((n % 2) + 0.5)) + sequence.push(n) } return sequence } diff --git a/Maths/test/JugglerSequence.test.js b/Maths/test/JugglerSequence.test.js index 99ee5b4660..392047a95b 100644 --- a/Maths/test/JugglerSequence.test.js +++ b/Maths/test/JugglerSequence.test.js @@ -1,6 +1,6 @@ import { jugglerSequence } from '../JugglerSequence' -describe('Testing isCompositeNumber function', () => { +describe('Testing jugglerSequence function', () => { it('should return [3, 5, 11, 36, 6, 2, 1 ] if the number is 3', () => { expect(jugglerSequence(3)).toEqual( expect.arrayContaining([3, 5, 11, 36, 6, 2, 1]) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy