What\'s the Most Efficient Way to Sum a Number\'s Digits?

Barbara Streisand
Release: 2024-11-24 01:00:11
Original
331 people have browsed it

What's the Most Efficient Way to Sum a Number's Digits?

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
Copy after login

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
Copy after login

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
Copy after login

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!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template