-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclosest_divisor_leetCode_1362.py
96 lines (49 loc) · 1.55 KB
/
closest_divisor_leetCode_1362.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
from cmath import sqrt
import math
from msilib import sequence
import re
#try the edge case where num is == 1
def closestDivisors(num):
n = num + 1
m = num + 2
b = math.sqrt(n)
b = math.ceil(b)
c = math.sqrt(m)
c = math.ceil(c)
dif_counter = num
# one = num
print (c)
i = 1
for i in reversed(range(1, c+1)):
#print(i)
if m % i ==0:
if (m / i == i):
dif_counter = 0
#print (abs(i - int(m/i)))
return(i, i)
elif ((abs(i - int(m/i))) <= dif_counter) :
one = (abs(i - int(m/i)))
dif_counter = (abs(i - int(m/i)))
return (i, int(m/i))
elif n % i ==0:
if (n / i == i):
dif_counter = 0
return(i, i)
elif ((abs(i - int(n/i))) <= dif_counter) :
dif_counter = (abs(i - int(n/i)))
return (i, int(n/i))
print(closestDivisors(24))
'''
Given an integer num, find the closest two integers in absolute difference whose product equals num + 1 or num + 2.
Return the two integers in any order.
Example 1:
Input: num = 8
Output: [3,3]
Explanation: For num + 1 = 9, the closest divisors are 3 & 3, for num + 2 = 10, the closest divisors are 2 & 5, hence 3 & 3 is chosen.
Example 2:
Input: num = 123
Output: [5,25]
Example 3:
Input: num = 999
Output: [40,25]
'''