Given an integer, k, we define its odd divisor sum to be the sum of all k's odd divisors. For example, if k = 20, then the odd divisor sum would be 1 + 5 = 6. Similarly, if given an array of values, we can find the odd divisor sum of the array by summing the odd divisor sums for each element in the array.
For example, if array
K = [3, 4, 20]
, the odd divisor sum of the array would beoddDivisorSum(3) + oddDivisorSum(4) + oddDivisorSum(20) = (1 + 3) + (1) + (1 + 5) = 11
.
This code works, but it does not pass all the cases due to time. I wanted to see if there was a more efficient way to write this. I heard that memoization could work, but I am not sure show how to implement it.
numbers = [3,21,11,7]
def count(numbers):
total = 0
for k in numbers:
for i in range(1,k+1,2):
if k % i == 0:
total+=i
return total