Optimisation de la sommation des chiffres d'un nombre
Trouver la somme des chiffres individuels dans un nombre est une tâche de programmation courante. Il existe plusieurs approches pour résoudre ce problème, chacune avec des caractéristiques de performances variables.
L'extrait Python fourni utilisant sum(int(digit) for digit in str(number)) convertit le nombre en chaîne et parcourt son individu. chiffres. Une solution alternative utilisant sum(map(int, str(number))) obtient le même résultat en mappant chaque chiffre sur un entier, puis en les additionnant.
Bien que ces approches soient simples, une implémentation plus efficace peut être obtenu en opérant entièrement sur des nombres entiers. L'extrait de code suivant utilise la boucle while pour parcourir chaque chiffre :
def sum_digits(n): s = 0 while n: s += n % 10 n //= 10 return s
Une autre variante utilisant divmod divise le nombre en son quotient et son reste :
def sum_digits2(n): s = 0 while n: n, remainder = divmod(n, 10) s += remainder return s
Les mesures de performances montrent que ces les solutions basées sur des entiers sont nettement plus rapides que les alternatives basées sur des chaînes :
Function | Time Per Loop |
---|---|
sum_digits3 | 479 ns |
sum_digits | 574 ns |
sum_digits2 | 716 ns |
sum(map(int, str(n))) | 1.42 us |
sum([int(digit) for digit in str(n)]) | 1.52 us |
sum(int(digit) for digit in str(n)) | 2.04 us |
Par conséquent, pour une vitesse optimale, il il est recommandé d'utiliser l'une des approches basées sur les nombres entiers présentées dans cette discussion.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!