Sum the Digits of a Number: An Efficient Approach
To find the sum of the digits in a number, the most efficient approach is to utilize purely integer operations. The following Python code showcases this technique:
def sum_digits(n): s = 0 while n: s += n % 10 n //= 10 return s
Here, we repeatedly apply modulo 10 to extract the rightmost digit and add it to the sum. By integer-dividing by 10, we shift to the next digit.
An even faster version uses a single assignment statement:
def sum_digits3(n): r = 0 while n: r, n = r + n % 10, n // 10 return r
Speed comparisons indicate that using integer operations is significantly faster than converting the number to a string and using string manipulation.
%timeit sum_digits(n) # Pure integer operations 1000000 loops, best of 3: 479 ns per loop %timeit sum_digits2(n) # Integer operations with divmod 1000000 loops, best of 3: 716 ns per loop %timeit sum(map(int, str(n))) # String manipulation 1000000 loops, best of 3: 1.42 us per loop %timeit sum([int(digit) for digit in str(n)]) # List comprehension 100000 loops, best of 3: 1.52 us per loop %timeit sum(int(digit) for digit in str(n)) # Generator expression 100000 loops, best of 3: 2.04 us per loop
Therefore, utilizing integer operations is the most efficient approach for summing the digits of a number.
The above is the detailed content of What\'s the Most Efficient Way to Sum a Number\'s Digits?. For more information, please follow other related articles on the PHP Chinese website!