Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 29 janv. 2011 à 12:33
Noter que si l'on utilise l'opération modulo la deuxième optimisation dont je parlais devient sans objet. On obtient alors :
fsum += sum[i] - (sum[i] % 10) + (sum[I] div 10); (où div est la division entière ou euclidienne, j'ignore sa syntaxe en Javascript alors je laisse le "div").
Mais du fait de la spécificité de l'algorithme de Luhn que tu utilises ici on peut encore optimiser plus loin, je te laisse chercher.
Cordialement, Bacterius !
PS : lire "javascript" dans le commentaire avant, faute d'inattention.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 29 janv. 2011 à 12:27
Salut,
"Math.floor(sum[i]/10)*10))"
A éviter : on utilise l'opération modulo (c'est % il me semble en Java).
"fsum += (sum[i]-(Math.floor(sum[i]/10)*10))+Math.floor(sum[i]/10);"
Ne peut-on pas optimiser ceci comme "fsum += sum[i]-9*Math.floor(sum[i]/10);", sauf erreur de ma part ?
-> Prendre l'habitude de ne jamais croiser du flottant (Math.floor, etc..) et de l'arithmétique, ça ne va pas ensemble. Noter que l'arithmétique est toujours, *toujours*, plus rapide qu'une opération flottante.
29 janv. 2011 à 12:33
fsum += sum[i] - (sum[i] % 10) + (sum[I] div 10); (où div est la division entière ou euclidienne, j'ignore sa syntaxe en Javascript alors je laisse le "div").
Mais du fait de la spécificité de l'algorithme de Luhn que tu utilises ici on peut encore optimiser plus loin, je te laisse chercher.
Cordialement, Bacterius !
PS : lire "javascript" dans le commentaire avant, faute d'inattention.
29 janv. 2011 à 12:27
"Math.floor(sum[i]/10)*10))"
A éviter : on utilise l'opération modulo (c'est % il me semble en Java).
http://fr.wikipedia.org/wiki/Modulo_(informatique)
"fsum += (sum[i]-(Math.floor(sum[i]/10)*10))+Math.floor(sum[i]/10);"
Ne peut-on pas optimiser ceci comme "fsum += sum[i]-9*Math.floor(sum[i]/10);", sauf erreur de ma part ?
-> Prendre l'habitude de ne jamais croiser du flottant (Math.floor, etc..) et de l'arithmétique, ça ne va pas ensemble. Noter que l'arithmétique est toujours, *toujours*, plus rapide qu'une opération flottante.
Cordialement, Bacterius !