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
12+ (must be a positive integer).
13+
14+ Returns:
15+ True if number is a power of base, False otherwise.
16+
17+ Raises:
18+ ValueError: If base or number are not positive integers.
19+
20+ Examples:
21+ >>> is_power(2, 8)
22+ True
23+ >>> is_power(3, 81)
24+ True
25+ >>> is_power(10, 1)
26+ True
27+ >>> is_power(5, 120)
28+ False
29+ >>> is_power(1, 1)
30+ True
31+ >>> is_power(1, 5)
32+ False
33+ >>> is_power(0, 5)
34+ Traceback (most recent call last):
35+ ...
36+ ValueError: Both base and number must be positive integers
37+ >>> is_power(4, -16)
38+ Traceback (most recent call last):
39+ ...
40+ ValueError: Both base and number must be positive integers
41+ """
42+ if base <= 0 or number <= 0 :
43+ raise ValueError ("Both base and number must be positive integers" )
44+
45+ if base == 1 :
46+ return number == 1
47+
48+ # Repeatedly divide number by base until it's no longer divisible.
49+ while number % base == 0 :
50+ number //= base
51+
52+ # If number has been reduced to 1, it was a power of base.
53+ return number == 1
54+
55+
56+ if __name__ == "__main__" :
57+ import doctest
58+
59+ doctest .testmod ()
You can’t perform that action at this time.
0 commit comments