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