Heim > Artikel > Backend-Entwicklung > Was ist der effizienteste Weg, die Ziffern einer Zahl zu summieren?
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!