From 31053e28057aa9149229e24b42dcabe592b312f0 Mon Sep 17 00:00:00 2001 From: AdvikHegde Date: Mon, 6 Oct 2025 09:47:57 +0530 Subject: [PATCH 1/2] Add countNumbersDivisible algorithm with improved logic --- src/Math/countNumbersDivisible.js | 56 +++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/Math/countNumbersDivisible.js diff --git a/src/Math/countNumbersDivisible.js b/src/Math/countNumbersDivisible.js new file mode 100644 index 0000000000..c736e3e7d9 --- /dev/null +++ b/src/Math/countNumbersDivisible.js @@ -0,0 +1,56 @@ +/** + * Count the numbers divisible by ‘M’ in a given range + * + * @see {@link https://www.tutorialspoint.com/count-the-numbers-divisible-by-m-in-a-given-range-in-cplusplus} + * + * We have 3 numbers A, B, M as inputs, A and B defines the numbers range [A, B] + * Count the total number of divisibles in that range by number M + * + * @author Chetan07j + */ + +/** + * Function to find total divisibles in given range + * + * @param {number} num1 + * @param {number} num2 + * @param {number} divider + * + * @returns {number} count of total number of divisibles + */ +const countNumbersDivisible = (num1, num2, divider) => { + if ( + typeof num1 !== 'number' || + typeof num2 !== 'number' || + typeof divider !== 'number' + ) { + throw new Error('Invalid input, please pass only numbers') + } + + // Valid number range is num1 < num2, otherwise throw error + if (num1 > num2) { + throw new Error( + 'Invalid number range, please provide numbers such that num1 < num2' + ) + } + + // if divider is out of range then return 0 + // as in such case no divisible exists + if (divider > num2) { + return 0 + } + + // Divider cannot be zero, as division by zero is invalid + if (divider === 0) { + throw new Error('Divider cannot be zero') + } + + // Find the number of multiples of divider for num1 and num2 + // using integer division for accurate counting + const divisibleCount = + Math.floor(num2 / divider) - Math.floor((num1 - 1) / divider) + + return divisibleCount +} + +export { countNumbersDivisible } From 966a7b1a8e9be419c4f3dc4a64fd9fa69cd5ad5a Mon Sep 17 00:00:00 2001 From: AdvikHegde Date: Mon, 6 Oct 2025 09:57:35 +0530 Subject: [PATCH 2/2] =?UTF-8?q?Rename=20countNumbersDivisible.js=20?= =?UTF-8?q?=E2=86=92=20CountNumbersDivisible.js=20to=20follow=20UpperCamel?= =?UTF-8?q?Case?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Math/{countNumbersDivisible.js => CountNumbersDivisible.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/Math/{countNumbersDivisible.js => CountNumbersDivisible.js} (100%) diff --git a/src/Math/countNumbersDivisible.js b/src/Math/CountNumbersDivisible.js similarity index 100% rename from src/Math/countNumbersDivisible.js rename to src/Math/CountNumbersDivisible.js