3 votes

Le moyen le plus rapide d'additionner les chiffres d'un nombre

Étant donné un grand nombre, par exemple 9223372036854775807 ( Int64.MaxValue ), quel est le moyen le plus rapide d'additionner les chiffres ?

Actuellement, je suis en train de ToString et de reparsing chaque char dans une int :

num.ToString().Sum(c => int.Parse(new String(new char[] { c })));

Ce qui est sûrement horriblement inefficace. Des suggestions ?

Et enfin, comment faire pour que cela fonctionne avec BigInteger ?

Gracias

0voto

Zeki Points 1680

Au lieu d'utiliser int.parse, pourquoi ne pas soustraire '0' à chaque chiffre pour obtenir la valeur réelle.

Rappelez-vous, '9' - '0' = 9, donc vous devriez pouvoir le faire dans l'ordre k (longueur du nombre). La soustraction n'est qu'une opération, ce qui ne devrait pas ralentir les choses.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X