Si je veux calculer un^b mod c alors il y a un moyen efficace de le faire, sans calculer a^b en entier.Fonction Modulo Power dans J
Cependant, lors de la programmation, si j'écris f g x alors g (x) est calculé indépendamment de f.
J permet de composer f et g dans des cas spéciaux, et la fonction modulo power en fait partie. Par exemple, ce qui suit est extrêmement rapide.
1000&| @ (2&^) 10000000x
En effet, le « sommet » conjonction « @ » indique la langue pour composer les fonctions, si possible. Si je l'enlève, ça va insupportablement lentement.
Si toutefois je veux travailler avec x^x, alors^~ ne fonctionne plus et j'obtiens des erreurs de limite pour les grandes valeurs. Relier ces grandes valeurs fonctionne cependant.
Alors
999&| @ (100333454&^) 100333454x
exécute agréable et rapide, mais
999&| @ ^~ 100333454x
Ça me donne une erreur de limite - l'ERS est trop grand. Ai-je raison de penser que dans ce cas, J n'utilise pas un algorithme efficace de modulo de puissance?