From 1356a7aa2c7b356e4ed1b27c2daf72a2168826c8 Mon Sep 17 00:00:00 2001 From: Dev Agrawal Date: Mon, 2 Oct 2023 04:29:06 +0530 Subject: [PATCH 1/3] Create is_power_of_four_logarithm.py Fixes #9331 --- maths/is_power_of_four_logarithm.py | 35 +++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 maths/is_power_of_four_logarithm.py diff --git a/maths/is_power_of_four_logarithm.py b/maths/is_power_of_four_logarithm.py new file mode 100644 index 000000000000..c8f58b5c984d --- /dev/null +++ b/maths/is_power_of_four_logarithm.py @@ -0,0 +1,35 @@ +import math + + +def is_power_of_four_logarithm(num: int) -> bool: + """ + Check if a given number is a power of four using logarithms. + + Args: + num (int): The number to be checked. + + Returns: + bool: True if the number is a power of 4, False otherwise. + + Raises: + ValueError: If the input number is not positive. + """ + if num <= 0: + raise ValueError("Input number must be positive") + + # Calculate the logarithm base 4 of the number + log_base_4 = math.log(num, 4) + + # Check if the result is an integer + return log_base_4.is_integer() + + +# Test cases +if __name__ == "__main__": + num1 = 16 # 4^2 = 16 + num2 = 4096 # 4^6 = 4096 + num3 = 18 # Not a power of 4 + + print(f"{num1} is a power of 4: {is_power_of_four_logarithm(num1)}") + print(f"{num2} is a power of 4: {is_power_of_four_logarithm(num2)}") + print(f"{num3} is a power of 4: {is_power_of_four_logarithm(num3)}") From c54e7d57cecf6d52a4e2b0c23a3c5d0b8e0d608f Mon Sep 17 00:00:00 2001 From: Dev Agrawal Date: Mon, 2 Oct 2023 04:50:18 +0530 Subject: [PATCH 2/3] Create sum_bit_manipulation.py Fixes #9329 --- maths/sum_bit_manipulation.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 maths/sum_bit_manipulation.py diff --git a/maths/sum_bit_manipulation.py b/maths/sum_bit_manipulation.py new file mode 100644 index 000000000000..a678e5712f2f --- /dev/null +++ b/maths/sum_bit_manipulation.py @@ -0,0 +1,16 @@ +def add_numbers(a: int, b: int) -> int: + """ + Add two integers using bitwise operations. + + Args: + a (int): The first integer. + b (int): The second integer. + + Returns: + int: The sum of the two integers. + """ + while b > 0: + carry = a & b + a = a ^ b # Sum + b = carry << 1 + return a From fe3387d66f4df6cc131d11d058bf4ae94b0289f8 Mon Sep 17 00:00:00 2001 From: Dev Agrawal Date: Mon, 2 Oct 2023 04:53:04 +0530 Subject: [PATCH 3/3] Delete sum_bit_manipulation.py Accidentally added another file to submission --- maths/sum_bit_manipulation.py | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 maths/sum_bit_manipulation.py diff --git a/maths/sum_bit_manipulation.py b/maths/sum_bit_manipulation.py deleted file mode 100644 index a678e5712f2f..000000000000 --- a/maths/sum_bit_manipulation.py +++ /dev/null @@ -1,16 +0,0 @@ -def add_numbers(a: int, b: int) -> int: - """ - Add two integers using bitwise operations. - - Args: - a (int): The first integer. - b (int): The second integer. - - Returns: - int: The sum of the two integers. - """ - while b > 0: - carry = a & b - a = a ^ b # Sum - b = carry << 1 - return a