We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
Day 19: Interfaces
Day 19: Interfaces
+ 0 comments No Python?! :-(
+ 0 comments C# - Just kept it simple, I'm sure the performance geeks are screaming.
public class Calculator : AdvancedArithmetic { public int divisorSum(int n) { int sum = 0; for (int i = 1; i <= n; i++) { if (n % i == 0) sum += i; } return sum; } }
+ 0 comments Here is a simple solution written in Python 3. Surprisingly, many other solutions I see don't realize you don't need to iterate though each number - only the first half.
def divisorSum(self, n): if n == 1: return 1 else: factor_sum = 1 + n for i in range(2, n//2 + 1): if n % i == 0: factor_sum += i return factor_sum
+ 0 comments Efficient O(n^(1/2)) solution
From my HackerRank solutions.
Runtime: O(n^(1/2))
Space Complexity: O(1)public int divisorSum(int n) { int sum = 0; int sqrt = (int) Math.sqrt(n); // Small optimization: if n is odd, we can't have even numbers as divisors int stepSize = (n % 2 == 1) ? 2 : 1; for (int i = 1; i <= sqrt; i += stepSize) { if (n % i == 0) { // if "i" is a divisor sum += i + n/i; // add both divisors } } // If sqrt is a divisor, we should only count it once if (sqrt * sqrt == n) { sum -= sqrt; } return sum; }
+ 0 comments Here is Mine Code in Python :
def divisorSum(self, n): sum = 0 for i in range(1,n+1): if n % i == 0: sum += i return sum
Load more conversations
Sort 592 Discussions, By:
Please Login in order to post a comment