y'a plusieurs sortes de nombres narcissiques, voila le PPDI
(PluPerfect Digital Invariant)
En gros un nombre est un PPDI si la somme de ses n chiffres à la puissance n est égale à lui même
Exemple :
153 a 3 chiffres et 153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153
Donc 153 est un PPDI
Code : Tout sélectionner
Procedure.l IsPPDI(Natural.l)
Protected PPDI.l, Temp.l
Protected Length.l, Sum.l
Protected Pow.l, Digit.l
If Natural >= 0
If Natural < 10
PPDI = #True
Else
Temp = Natural
While Temp
Temp / 10
Length + 1
Wend
Temp = Natural
While Temp
Digit = (Temp % 10)
If Digit
Pow = 1
For i = 1 To Length
Pow * Digit
Next i
Sum + Pow
EndIf
Temp / 10
Wend
If Sum = Natural
PPDI = #True
EndIf
EndIf
EndIf
ProcedureReturn PPDI
EndProcedure
Debug IsPPDI(153)
Debug IsPPDI(1634)
Debug IsPPDI(370)
Debug IsPPDI(371)
