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
Libérer: 2024-11-24 01:00:11
original
437 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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 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