I am stuck explaining a solution to myself and I need help.
Question:
Write a function gcd that takes two natural numbers and calculates their gcd.
Example: gcd (6, 15) should return 3.
What I have tried:
Answer:
function gcd (a,b) {
if ((typeof a !== 'number') || (typeof b !== 'number'))
return false;
a = Math.abs(a);
b = Math.abs(b);
while (b) {
let c = b;
b = a % b;
a = c;
}
return a;
};
My Explanation:
> we declare a function 'gcd'
> it has 2 parameters: 'a' and 'b'
> we first open an if statement to check if our condition is true
> we want to know if typeof a or typeof b is not a number
> if our condition is true, meaning if typeof a & typeof b are not a number and a string, boolean or any other data type, then we return false and end the function
> if our condition is false, which it is, as both (typeof a and typeof b) are numbers then we want to execute the following code
>>> we want to convert our two parameters 'a' & 'b' to absolute positive values
>>> we do that by using Math.abs(a) and Math.abs(b)
>>> we initialize the variable a & b by the output we get from using the Math.abs method on a & b
>>> we then open a while statement
>>> this while loop will loop through a block of code as long as a specified condition is true
>>> if the specified condition is false then the statement after the while loop will be executed
>>> our condition is to check if b is a truthy or falsy value
>>> if it is true then we want to run the block of code
>>>> we create a temporary variable 'c'
>>>> we initialize it with the value of 'b'
>>>> we then use the modulo / remainder operator by dividing a by b
>>>> we store the result in b
Help: I need assistance understanding as I am blank from this point onwards.
Thank you in advance !!