mirror of
https://github.com/trekhleb/javascript-algorithms.git
synced 2025-12-08 19:06:00 +00:00
* Get Bit: Make more terse * Power of two: Allowed 1 as a valid power of 2. Power of two: Removed unnecessary exception throwing. * Fisher Yates: Made more terse * Least Common Multiple: Fill undefined value * Greatest Common Divisor: Fill undefined value. Greatest Common Divisor: Make more terse.
26 lines
573 B
JavaScript
26 lines
573 B
JavaScript
/**
|
|
* @param {number} number
|
|
* @return {boolean}
|
|
*/
|
|
export default function isPowerOfTwo(number) {
|
|
// 1 (2^0) is the smallest power of two.
|
|
if (number < 1) {
|
|
return false;
|
|
}
|
|
|
|
// Let's find out if we can divide the number by two
|
|
// many times without remainder.
|
|
let dividedNumber = number;
|
|
while (dividedNumber !== 1) {
|
|
if (dividedNumber % 2 !== 0) {
|
|
// For every case when remainder isn't zero we can say that this number
|
|
// couldn't be a result of power of two.
|
|
return false;
|
|
}
|
|
|
|
dividedNumber /= 2;
|
|
}
|
|
|
|
return true;
|
|
}
|