Définition
Le théorème de Wolstenholme déclare que:
où a
et b
sont des entiers positifs et p
est premier, et la grande chose entre parenthèses est le coefficient binomial .
Tâche
Pour vérifier cela, vous aurez trois entrées: a
, b
, p
, où a
et b
sont des nombres entiers positifs et p
est premier.
Calculer:
où a
et b
sont des entiers positifs et p
est premier, et la chose entre parenthèses est le coefficient binomial .
Spécifications
Puisque:
où et la chose entre parenthèses est le coefficient binomial .
Vous pouvez supposer que 2b <= a
Cas de test
a b p output
6 2 5 240360
3 1 13 3697053
7 3 13 37403621741662802118325
code-golf
number-theory
combinatorics
Leaky Nun
la source
la source
.0
à la fin, pour vraiment montrer qu'il n'y a pas de restes de la division.[240360]
(tableau singleton) serait un format de sortie acceptable?Réponses:
Haskell,
7371 octetsEn raison de la récursivité, cette implémentation est très lente. Malheureusement, ma définition du coefficient binomial a la même longueur que
import Math.Combinatorics.Exact.Binomial
.Une bizarrerie intéressante est que Haskell 98 a permis des modèles arithmétiques qui auraient raccourci le même code à 64 octets:
la source
Gelée ,
121110 octetsAttend
a, b
etp
comme arguments de ligne de commande.Essayez-le en ligne! ou vérifiez tous les cas de test .
Comment ça fonctionne
la source
Python 2,
1141098571 octetsUne implémentation simple. Suggestions de golf bienvenues.
Edit: -29 octets grâce à Leaky Nun et -14 octets grâce à Dennis.
Une alternative plus simple et de même longueur, grâce à Dennis, est
la source
05AB1E , 11 octets
Prend l'entrée comme:
Code:
Utilise l' encodage CP-1252 . Essayez-le en ligne! .
la source
R,
5048 octetsAussi simple que possible ... Merci à @Neil d'avoir économisé 2 octets.
la source
choose
et en utilisantpryr::f
pour définir la fonction:B=choose;pryr::f((B(a*p,b*p)-B(a,b))/p^3)
.MATL , 13 octets
Essayez-le en ligne!
Le dernier cas de test ne produit pas un entier exact en raison de la précision numérique. Le type de données par défaut de MATL (
double
) ne peut gérer que des entiers exacts jusqu'à2^53
.Explication
la source
J, 17 octets
Usage
Par exemple:
Il ne s'agit pour l'instant que d'une mise en œuvre directe de la formule.
Remarque : pour le 3ème cas de test, les numéros d'entrée doivent être définis comme étendus (pour gérer une grande arithmétique):
la source
Brachylog , 52 octets
Essayez-le en ligne!
Accepte l'entrée
[[a, b], p]
.la source
Python 3 avec SciPy , 72 octets
Une fonction anonyme qui prend l'entrée via un argument et renvoie le résultat.
Il ne se passe pas grand-chose ici; il s'agit d'une implémentation directe du calcul souhaité.
Essayez-le sur Ideone (le résultat est retourné en notation exponentielle pour le dernier cas de test)
la source
Nim ,
85827559 octetsIl s'agit d'une procédure anonyme; pour l'utiliser, il doit être passé en argument à une autre procédure, qui l'imprime. Un programme complet qui peut être utilisé pour les tests est donné ci-dessous
math
Lebinom
proc du module de Nim calcule le coefficient binomial de ses deux arguments.la source
Python 2 , 67 octets
Essayez-le en ligne!
Exprime les coefficients binomiaux de manière arithmétique à l'aide de cette méthode .
la source
JavaScript (ES6), 70 octets
Économisez 1 octet en utilisant ES7 (
/p**3
au lieu de/p/p/p
).la source
APL (Dyalog) , 18 octets
Essayez-le en ligne!
la source
Pari / GP , 43 octets
Essayez-le en ligne!
la source