MCPcopy Create free account
hub / github.com/TheAlgorithms/Python / semi_perfect

Function semi_perfect

maths/special_numbers/weird_number.py:51–81  ·  view source on GitHub ↗

>>> semi_perfect(0) True >>> semi_perfect(1) True >>> semi_perfect(12) True >>> semi_perfect(13) False # >>> semi_perfect(-12) # True

(number: int)

Source from the content-addressed store, hash-verified

49
50
51def semi_perfect(number: int) -> bool:
52 """
53 >>> semi_perfect(0)
54 True
55 >>> semi_perfect(1)
56 True
57 >>> semi_perfect(12)
58 True
59 >>> semi_perfect(13)
60 False
61
62 # >>> semi_perfect(-12)
63 # True
64 """
65 values = factors(number)
66 r = len(values)
67 subset = [[0 for i in range(number + 1)] for j in range(r + 1)]
68 for i in range(r + 1):
69 subset[i][0] = True
70
71 for i in range(1, number + 1):
72 subset[0][i] = False
73
74 for i in range(1, r + 1):
75 for j in range(1, number + 1):
76 if j < values[i - 1]:
77 subset[i][j] = subset[i - 1][j]
78 else:
79 subset[i][j] = subset[i - 1][j] or subset[i - 1][j - values[i - 1]]
80
81 return subset[r][number] != 0
82
83
84def weird(number: int) -> bool:

Callers 1

weirdFunction · 0.85

Calls 1

factorsFunction · 0.85

Tested by

no test coverage detected