Fragments (2)

On définit grossièrement la persistence multiplicative par le nombre de fois qu’on peut multiplier les chiffres d’un nombre entre eux jusqu’à ce que le résultat ne comporte qu’un seul chiffre.

Par exemple:

679 ->  6 * 7 * 9 = 378
378 ->  3 * 7 * 8 = 168
168 ->  1 * 6 * 8 = 48
48 ->  4 * 8 = 32
32 ->  3 * 2 = 6

On dira donc que le nombre 679 a une persistence multiplicative de 5.

Le code Pharo ci-bas sert à trouver la persistence multiplicative d’un nombre.

| persistence residu |

"Trouver la persistence multiplicative du nombre 277777788888899"
residu := 277777788888899.

persistence := 0.
[ residu > 9 ]
    whileTrue: [ residu := residu printString 
                               inject: 1 
                               into: [ :mul :each | mul * each digitValue ].
                 persistence := persistence + 1 ].
persistence inspect

Pour des méthodes plus performantes, il y a cet excellent papier (en anglais) qui explique quelques astuces et également celui-ci en français..

 

Publicités

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.