Skip to content

Commit d4949b0

Browse files
authored
Create closest-divisors.py
1 parent 0cea349 commit d4949b0

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

Python/closest-divisors.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Time: O(sqrt(n))
2+
# Space: O(1)
3+
4+
class Solution(object):
5+
def closestDivisors(self, num):
6+
"""
7+
:type num: int
8+
:rtype: List[int]
9+
"""
10+
def divisors(n):
11+
for d in reversed(xrange(1, int(n**0.5)+1)):
12+
if n % d == 0:
13+
return d, n//d
14+
return 1, n
15+
16+
return min([divisors(num+1), divisors(num+2)], key=lambda x: x[1]-x[0])
17+
18+
19+
20+
# Time: O(sqrt(n))
21+
# Space: O(1)
22+
class Solution2(object):
23+
def closestDivisors(self, num):
24+
"""
25+
:type num: int
26+
:rtype: List[int]
27+
"""
28+
result, d = [1, num+1], 1
29+
while d*d <= num+2:
30+
if (num+2) % d == 0:
31+
result = [d, (num+2)//d]
32+
if (num+1) % d == 0:
33+
result = [d, (num+1)//d]
34+
d += 1
35+
return result

0 commit comments

Comments
 (0)