Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der effizienteste Weg, die Ziffern einer Zahl zu summieren?

Was ist der effizienteste Weg, die Ziffern einer Zahl zu summieren?

Barbara Streisand
Barbara StreisandOriginal
2024-11-24 01:00:11298Durchsuche

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

Summiere die Ziffern einer Zahl: Ein effizienter Ansatz

Um die Summe der Ziffern in einer Zahl zu ermitteln, ist der effizienteste Ansatz um rein ganzzahlige Operationen zu verwenden. Der folgende Python-Code veranschaulicht diese Technik:

def sum_digits(n):
    s = 0
    while n:
        s += n % 10
        n //= 10
    return s

Hier wenden wir wiederholt Modulo 10 an, um die Ziffer ganz rechts zu extrahieren und zur Summe zu addieren. Durch eine ganzzahlige Division durch 10 wechseln wir zur nächsten Ziffer.

Eine noch schnellere Version verwendet eine einzelne Zuweisungsanweisung:

def sum_digits3(n):
    r = 0
    while n:
        r, n = r + n % 10, n // 10
    return r

Geschwindigkeitsvergleiche zeigen, dass die Verwendung von Ganzzahloperationen deutlich schneller ist als Konvertieren der Zahl in eine Zeichenfolge und Verwenden der Zeichenfolgenmanipulation.

%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

Daher ist die Verwendung ganzzahliger Operationen der effizienteste Ansatz zum Summieren der Ziffern von a Nummer.

Das obige ist der detaillierte Inhalt vonWas ist der effizienteste Weg, die Ziffern einer Zahl zu summieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn