From 13b7c244790a2da99fbd91f01bfe321d84bd02fb Mon Sep 17 00:00:00 2001 From: tehliang Date: 2022年7月25日 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: 2022年7月26日 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: 2022年7月26日 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: 2022年7月26日 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: 2022年7月28日 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])

AltStyle によって変換されたページ (->オリジナル) /