Maison > développement back-end > Tutoriel Python > Quelles sont les façons les plus efficaces de additionner les chiffres d'un nombre ?

Quelles sont les façons les plus efficaces de additionner les chiffres d'un nombre ?

Susan Sarandon
Libérer: 2024-11-24 01:14:14
original
240 Les gens l'ont consulté

What are the most efficient ways to sum the digits of a number?

Sommation des chiffres d'un nombre : exploration d'approches efficaces

Lorsque l'on cherche à déterminer la somme totale des chiffres dans une entrée numérique, diverses méthodologies peuvent être employé. Bien que l'instinct initial puisse conduire à utiliser une approche basée sur des chaînes, à convertir le nombre en chaîne puis à appliquer des opérations mathématiques sur chaque chiffre individuel, cette méthode peut s'avérer sous-optimale.

Une technique plus efficace consiste à manipuler le nombre sous forme d'entier. Ceci peut être réalisé grâce à une boucle while qui parcourt les chiffres du nombre, extrayant à plusieurs reprises le dernier chiffre (à l'aide de l'opérateur modulo) et l'ajoutant à un total cumulé tout en excluant ce chiffre (par division entière). Cette méthode, connue sous le nom d'approche modulo-and-divide, est illustrée dans l'extrait de code suivant :

def sum_digits(n):
    s = 0
    while n:
        s += n % 10
        n //= 10
    return s
Copier après la connexion

Pour une optimisation plus poussée, on peut utiliser la fonction divmod(), qui effectue simultanément les fonctions modulo et entière. opérations de division :

def sum_digits2(n):
    s = 0
    while n:
        n, remainder = divmod(n, 10)
        s += remainder
    return s
Copier après la connexion

De plus, une seule instruction d'affectation peut être utilisée pour améliorer la vitesse d'exécution en combinant la sommation et la division opérations :

def sum_digits3(n):
   r = 0
   while n:
       r, n = r + n % 10, n // 10
   return r
Copier après la connexion

L'analyse comparative de ces approches révèle que la méthode modulo-and-divide surpasse les techniques de manipulation de chaînes, tandis que la version à affectation unique apparaît comme l'option la plus rapide :

%timeit sum_digits(n)
1000000 loops, best of 3: 574 ns per loop

%timeit sum_digits2(n)
1000000 loops, best of 3: 716 ns per loop

%timeit sum_digits3(n)
1000000 loops, best of 3: 479 ns per loop

%timeit sum(map(int, str(n)))
100000 loops, best of 3: 1.42 us per loop

%timeit sum([int(digit) for digit in str(n)])
100000 loops, best of 3: 1.52 us per loop

%timeit sum(int(digit) for digit in str(n))
100000 loops, best of 3: 2.04 us per loop
Copier après la connexion

Par conséquent , lorsque l'on cherche à additionner efficacement les chiffres d'un nombre, il est conseillé d'opter pour la technique modulo-division ou même la variante à affectation unique pour des performances maximales.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal