Inspiré par cette question sur Math.
Laissez la factorisation d'un nombre, n , d' être représenté en tant que P (n) = 2 a x 3 b x 5 c x ... .
( En utilisant x comme symbole de multiplication.)
Ensuite , le nombre de diviseurs de n peut être représentée par D (n) = (a + 1) x (b + 1) x (c + 1) ... .
Ainsi, on peut facilement dire que le nombre de diviseurs de 2n est D (2n) = (a + 2) x (b + 1) x (c + 1) ... ,
le nombre de diviseurs de 3n est D (3n ) = (a + 1) x (b + 2) x (c + 1) ... ,
et ainsi de suite.
Défi:
Écrivez un programme ou une fonction qui utilise ces propriétés pour calculer n , compte tenu de certaines entrées de diviseur.
Contribution:
Un ensemble d'entiers, appelons-les w, x, y, z , avec toutes les définitions suivantes:
- toutes les entrées sont supérieures à 1 -
w, x, y, z > 1
- x et z sont distincts -
x<>z
- x et z sont premiers -
P(x)=x
,D(x)=2
etP(z)=z
,D(z)=2
- w est le nombre de diviseurs de xn -
D(xn)=w
- y est le nombre de diviseurs de zn -
D(zn)=y
Pour le problème donné dans la question liée, un exemple d'entrée pourrait être (28, 2, 30, 3)
. Cela se traduit par D(2n)=28
et D(3n)=30
avec n=864
.
Production:
Un seul entier, n , qui satisfait aux définitions et restrictions d'entrée ci-dessus. Si plusieurs nombres correspondent aux définitions, affichez le plus petit. Si aucun entier n'est possible, émettez une valeur de falsey .
Exemples:
(w, x, y, z) => output
(28, 2, 30, 3) => 864
(4, 2, 4, 5) => 3
(12, 5, 12, 23) => 12
(14, 3, 20, 7) => 0 (or some other falsey value)
(45, 13, 60, 11) => 1872
(45, 29, 60, 53) => 4176
Règles:
- Les règles de code-golf standard et les restrictions contre les échappatoires s'appliquent.
- Les règles d'entrée / sortie standard s'appliquent.
- Les numéros d'entrée peuvent être dans n'importe quel ordre - veuillez spécifier dans votre réponse l'ordre que vous utilisez.
- Les numéros d'entrée peuvent être dans n'importe quel format approprié: séparés par des espaces, un tableau, des arguments de fonction ou de ligne de commande séparés, etc. - votre choix.
- De même, si la sortie vers STDOUT, les espaces blancs environnants, la nouvelle ligne de fin, etc. sont tous facultatifs.
- L'analyse syntaxique d'entrée et le formatage de sortie ne sont pas les caractéristiques intéressantes de ce défi.
- Dans l'intérêt d'une complexité saine et de débordements entiers, le numéro de défi n aura des restrictions telles que
1 < n < 100000
- c'est-à-dire que vous n'avez pas à vous soucier des réponses possibles en dehors de cette plage.
en relation
la source
Réponses:
Gelée ,
1716 octetsIl s'agit d'une solution de force brute qui essaie toutes les valeurs possibles jusqu'à 100 000. Essayez-le en ligne!
Version non concurrente
La dernière version de Jelly a une correction de bogue qui permet de réduire le code ci-dessus à 15 octets .
Essayez-le en ligne!
Comment ça fonctionne
la source