Maison >développement back-end >Tutoriel Python >Quelle est la manière la plus efficace de additionner les chiffres d'un nombre ?

Quelle est la manière la plus efficace de additionner les chiffres d'un nombre ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-24 01:00:11393parcourir

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

Somme les chiffres d'un nombre : une approche efficace

Pour trouver la somme des chiffres d'un nombre, l'approche la plus efficace est utiliser des opérations purement entières. Le code Python suivant présente cette technique :

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

Ici, nous appliquons à plusieurs reprises le modulo 10 pour extraire le chiffre le plus à droite et l'ajouter à la somme. En divisant un entier par 10, nous passons au chiffre suivant.

Une version encore plus rapide utilise une seule instruction d'affectation :

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

Les comparaisons de vitesse indiquent que l'utilisation d'opérations entières est nettement plus rapide que convertir le nombre en chaîne et utiliser la manipulation de chaîne.

%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

Par conséquent, utiliser des opérations sur des nombres entiers est l'approche la plus efficace pour additionner le chiffres d'un nombre.

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!

Déclaration:
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