Golfscript, 114 112 111 110 109 65 (86) caractères
Si vous ne vous souciez pas d'obtenir des résultats cette semaine, 65 caractères suffisent:
~](;2/0\:X{~\.X{0=}%^\{\.@- 1928049029:P.,\@{@*\%(!}++?**}+/+P%}/
Mais si vous recherchez l'efficacité, elle est légèrement plus longue à 86 caractères:
~](;2/0\:X{~\.X{0=}%^\{\[.0](@-[1928049029:P%P]{.~/{\.(;@@~@*-+\}+2*.1=}do;0=*}+/+P%}/
Ceci est disséqué beaucoup plus en détail que je ne veux le répéter ici sur mon blog .
Principalement pas mon travail, mais le fait de cracher lourdement de Nabb donne 47 caractères:
n%(!\:A{~A{~;.3$- 1928049029:N((?1or**}/\/+N%}/
Remarque: je n'ai raisonné qu'à propos de ce code: essayer de l'exécuter serait inutile étant donné la durée et la quantité de mémoire qu'il utiliserait.
{*N%2<}
par{*N%1=}
comme dans le blog et vous pouvez abandonner l'(;
aprèsN,
. Mais alors, pour l'entrée performances non pertinentes, vous pouvez utiliser le petit théorème de Fermat sans vous soucier du côté modulaire de l'exponentiation - laissez-le simplement pour le rangement final - alors la recette devientN((?
.{*N%1=}+
manquera le cas avec le dénominateur zéro, ce qui prendrait au moins 3 caractères à gérer. Bonne prise en faisant simplement x ^ (N-2) cependant, nous pouvons réellement obtenir 46 caractères en utilisant cela.Lua 444 caractères
Fonctionne pour l'exemple sur la page wiki
Mais en quelque sorte ne fonctionne pas pour les exemples ici sur cette page. Si quelqu'un peut trouver l'erreur?
Version non golfée:
Golfé (n'utilisant pas de champ fini), 444 caractères:
la source
Java,
435407 caractèresNon golfé:
la source
Haskell, 183
la source