Skip to content

Commit ba747df

Browse files
[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
1 parent 9a44b4e commit ba747df

File tree

1 file changed

+48
-44
lines changed

1 file changed

+48
-44
lines changed

maths/weird_number.py

Lines changed: 48 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
from math import sqrt
22
from typing import List
33

4-
def factors(n : int) -> List[int]:
4+
5+
def factors(n: int) -> list[int]:
56

67
v = []
78
v.append(1)
@@ -15,53 +16,56 @@ def factors(n : int) -> List[int]:
1516
return v
1617

1718

18-
def abundant(n : int) -> bool:
19-
sum = 0
20-
v = factors(n)
21-
for i in range(len(v)):
22-
sum += v[i]
23-
if (sum > n):
24-
return True
25-
else:
26-
return False
19+
def abundant(n: int) -> bool:
20+
sum = 0
21+
v = factors(n)
22+
for i in range(len(v)):
23+
sum += v[i]
24+
if sum > n:
25+
return True
26+
else:
27+
return False
28+
2729

2830
def semi_perfect(n: int) -> bool:
29-
v = factors(n)
30-
v.sort(reverse = False)
31-
r = len(v)
32-
subset = [[0 for i in range(n + 1)]
33-
for j in range(r + 1)]
34-
for i in range(r + 1):
35-
subset[i][0] = True
36-
37-
for i in range(1, n + 1):
38-
subset[0][i] = False
39-
40-
for i in range(1, r + 1):
41-
for j in range(1, n + 1):
42-
if j < v[i - 1]:
43-
subset[i][j] = subset[i - 1][j]
44-
else:
45-
subset[i][j] = subset[i - 1][j] or subset[i - 1][j - v[i - 1]]
46-
47-
if (subset[r][n]) == 0:
48-
return False
49-
else:
50-
return True
51-
52-
def weird(n : int) -> bool:
53-
if (abundant(n) == True and semi_perfect(n) == False):
54-
return True
55-
else:
56-
return False
31+
v = factors(n)
32+
v.sort(reverse=False)
33+
r = len(v)
34+
subset = [[0 for i in range(n + 1)] for j in range(r + 1)]
35+
for i in range(r + 1):
36+
subset[i][0] = True
37+
38+
for i in range(1, n + 1):
39+
subset[0][i] = False
40+
41+
for i in range(1, r + 1):
42+
for j in range(1, n + 1):
43+
if j < v[i - 1]:
44+
subset[i][j] = subset[i - 1][j]
45+
else:
46+
subset[i][j] = subset[i - 1][j] or subset[i - 1][j - v[i - 1]]
47+
48+
if (subset[r][n]) == 0:
49+
return False
50+
else:
51+
return True
52+
53+
54+
def weird(n: int) -> bool:
55+
if abundant(n) == True and semi_perfect(n) == False:
56+
return True
57+
else:
58+
return False
59+
5760

5861
def main() -> None:
59-
n = 70
60-
if (weird(n)):
61-
print("Weird Number")
62-
else:
63-
print("Not Weird Number")
64-
62+
n = 70
63+
if weird(n):
64+
print("Weird Number")
65+
else:
66+
print("Not Weird Number")
67+
68+
6569
if __name__ == "__main__":
6670
import doctest
6771

0 commit comments

Comments
 (0)