File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ def is_power (base : int , number : int ) -> bool :
2+ """
3+ Checks if a given integer `number` is a power of another integer `base`.
4+
5+ This function determines if there exists an integer x such that base^x = number.
6+ It handles positive integers only and raises an error for non-positive inputs.
7+ For more information, see: https://en.wikipedia.org/wiki/Power_of_two
8+
9+ Args:
10+ base: The base integer (must be a positive integer).
11+ number: The number to check if it's a power of base (must be a positive integer).
12+
13+ Returns:
14+ True if number is a power of base, False otherwise.
15+
16+ Raises:
17+ ValueError: If base or number are not positive integers.
18+
19+ Examples:
20+ >>> is_power(2, 8)
21+ True
22+ >>> is_power(3, 81)
23+ True
24+ >>> is_power(10, 1)
25+ True
26+ >>> is_power(5, 120)
27+ False
28+ >>> is_power(1, 1)
29+ True
30+ >>> is_power(1, 5)
31+ False
32+ >>> is_power(0, 5)
33+ Traceback (most recent call last):
34+ ...
35+ ValueError: Both base and number must be positive integers
36+ >>> is_power(4, -16)
37+ Traceback (most recent call last):
38+ ...
39+ ValueError: Both base and number must be positive integers
40+ """
41+ if base <= 0 or number <= 0 :
42+ raise ValueError ("Both base and number must be positive integers" )
43+
44+ if base == 1 :
45+ return number == 1
46+
47+ # Repeatedly divide number by base until it's no longer divisible.
48+ while number % base == 0 :
49+ number //= base
50+
51+ # If number has been reduced to 1, it was a power of base.
52+ return number == 1
53+
54+
55+ if __name__ == "__main__" :
56+ import doctest
57+
58+ doctest .testmod ()
You can’t perform that action at this time.
0 commit comments