Définitions
- Deux nombres sont co-premiers si leur seul diviseur commun positif est
1
. - Une liste de nombres est co-amorcée mutuellement si chaque paire de nombres de cette liste est co-amorcée les unes avec les autres.
- Une factorisation de nombre
n
est une liste de nombres dont le produit estn
.
Tâche
Étant donné un nombre positif n
, sortez la factorisation mutuellement co-prime de n
avec la longueur maximale qui ne comprend pas 1
.
Exemple
Car n=60
, la réponse est [3,4,5]
, car 3*4*5=60
et aucune autre factorisation mutuellement co-prime sans 1
a une longueur supérieure ou égale à 3
, la longueur de la factorisation.
Règles et libertés
- Vous pouvez utiliser n'importe quel format d'entrée / sortie raisonnable.
- Les entrées de la liste de sortie n'ont pas besoin d'être triées.
Cas de test
n output
1 []
2 [2]
3 [3]
4 [4]
5 [5]
6 [2, 3]
7 [7]
8 [8]
9 [9]
10 [2, 5]
11 [11]
12 [3, 4]
13 [13]
14 [2, 7]
15 [3, 5]
16 [16]
17 [17]
18 [2, 9]
19 [19]
20 [4, 5]
21 [3, 7]
22 [2, 11]
23 [23]
24 [3, 8]
25 [25]
26 [2, 13]
27 [27]
28 [4, 7]
29 [29]
30 [2, 3, 5]
31 [31]
32 [32]
33 [3, 11]
34 [2, 17]
35 [5, 7]
36 [4, 9]
37 [37]
38 [2, 19]
39 [3, 13]
40 [5, 8]
41 [41]
42 [2, 3, 7]
43 [43]
44 [4, 11]
45 [5, 9]
46 [2, 23]
47 [47]
48 [3, 16]
49 [49]
50 [2, 25]
51 [3, 17]
52 [4, 13]
53 [53]
54 [2, 27]
55 [5, 11]
56 [7, 8]
57 [3, 19]
58 [2, 29]
59 [59]
60 [3, 4, 5]
61 [61]
62 [2, 31]
63 [7, 9]
64 [64]
65 [5, 13]
66 [2, 3, 11]
67 [67]
68 [4, 17]
69 [3, 23]
70 [2, 5, 7]
71 [71]
72 [8, 9]
73 [73]
74 [2, 37]
75 [3, 25]
76 [4, 19]
77 [7, 11]
78 [2, 3, 13]
79 [79]
80 [5, 16]
81 [81]
82 [2, 41]
83 [83]
84 [3, 4, 7]
85 [5, 17]
86 [2, 43]
87 [3, 29]
88 [8, 11]
89 [89]
90 [2, 5, 9]
91 [7, 13]
92 [4, 23]
93 [3, 31]
94 [2, 47]
95 [5, 19]
96 [3, 32]
97 [97]
98 [2, 49]
99 [9, 11]
Notation
C'est du code-golf . La réponse la plus courte en octets l'emporte.
code-golf
number-theory
primes
division
Leaky Nun
la source
la source
1
.)Réponses:
Mathématiques , 24 octets
Essayez-le en ligne!
la source
#^#2&@@@FactorInteger@#&[1]
revient{1}
dans Mathematica. Mais cela fonctionne en mathématiques.FactorInteger
différemment. :)Brachylog , 4 octets
Essayez-le en ligne!
Explication
la source
05AB1E ,
35 octets+2 octets pour corriger le cas de bord de
1
. Merci à Riley pour le patch (et pour la suite de tests, mon 05ab1e n'est pas si fort!)Suite de tests sur Try it online!
Comment?
la source
1
.CJam , 9 octets
Essayez-le en ligne!
Sépare simplement l'entrée en ses puissances principales constitutives et supprime
1
s (uniquement nécessaire pour l'entrée1
).la source
Haskell , 51 octets
(2#)
est une fonction anonyme prenant un entier et renvoyant une liste.Utiliser comme
(2#) 99
.Essayez-le en ligne!
Inspiré par le truc de pouvoir que certaines personnes ont utilisé dans le récent défi du nombre sans carré .
m#n
génère des facteurs den
, en commençant parm
.m>n
, nous nous arrêtons, en concluant que nous avons déjà trouvé tous les facteurs.x=gcd(m^n)n
est le plus grand facteurn
dont les facteurs premiers sont tous inclusm
. Notez que parce que les plus petitsm
sont testés en premier, ce sera1
sauf sim
est premier.x
dans la liste résultante si ce n'est pas 1, puis récapitulons avec la suivantem
, en divisantn
parx
. Notez quex
etdiv n x
ne peuvent pas avoir de facteurs communs.(2#)
prend un nombre et commence à trouver ses facteurs2
.la source
MATL , 7 octets
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
Considérez la saisie
80
comme exemple.EDIT (9 juin 2017):
YF
avec deux sorties a été modifié dans la version 20.1.0 : les nombres premiers non facteurs et leurs exposants (zéro) sont ignorés. Cela n'affecte pas le code ci-dessus, qui fonctionne sans nécessiter de modifications (mais1X-
pourrait être supprimé).la source
1X-
est redondant dans la nouvelle version ... aussi, cela ressemble à une différence définie plutôt qu'à une intersection pour moi.Gelée , 5 octets
Suite de tests sur Try it online!
Comment?
la source
ÆfŒgZP
. Il a le même nombre de jetons mais trop d'atomes de deux octets;)1
pour une entrée1
qui est interdite (l'effet de l'exécution d'un produit vide).Alice , 10 octets
Essayez-le en ligne!
Malheureusement, cela utilise à nouveau les points de code comme des E / S entières . Le cas de test dans la liaison TIO est l'entrée 191808 qui se décompose en 64 , 81 et 37 . Notez que cette solution imprime les puissances premières dans l'ordre du plus grand au plus petit premier, donc nous obtenons la sortie
%Q@
.Pour plus de commodité, voici une solution de 16 octets avec des E / S décimales qui utilise le même algorithme de base:
Essayez-le en ligne!
Explication
Comme les autres réponses, cela décompose l'entrée en puissances principales.
la source
mathématique 46 octets
Essayez-le en ligne!
la source
{}; {2}; {3}; {2}; {5}; {2,3}; {7}; {2}; {3}; {2,5}; {11}; {2,3}; {13}; ...
mais il devrait{}; {2}; {3}; {4}; {5}; {2,3}; {7}; {8}; {9}; {2,5}; {11}; {4,3}; {13}; ...
plutôt sortir .#
plus que#
lui-même, vous pouvez économiser beaucoup d'octets en utilisantApply
(@@@
) au lieu deMap
(/@
):#^#2&@@@If...
PHP, 62 octets
imprime un tableau associatif avec le premier comme clé et à quelle fréquence le premier est utilisé comme valeur et rien pour l'entrée
1
Essayez-le en ligne!
Sortie pour
60
PHP, 82 octets
Essayez-le en ligne!
n'imprime rien pour la saisie
1
si vous souhaitez un tableau vide à la place et un tableau trié ce sera un peu plus longla source
En fait , 6 octets
Essayez-le en ligne!
Explication:
la source
Pari / GP , 28 octets
Essayez-le en ligne!
la source
miniML , 47 octets
Les défis impliquant la factorisation principale sont terriblement surreprésentés ici, donc nous sommes tous malheureusement obligés d'avoir la factorisation dans la bibliothèque standard.
Notez que le «mini» dans miniml fait référence à la taille de l'ensemble de fonctionnalités, et non à la taille du code source qui y est écrit.
la source
Rubis, 61 octets
Je suis vraiment déçu après avoir cherché des solutions de 6 à 7 octets -))
la source
Mathematica, 24 octets
Dommage
@@@*
n'est pas une chose. De plus, je voudrais/@*
,@@*
et en fait, le changement@@@
à/@@
,//@
à@@@
ou autre chose et ajouter la famille infinie de//@
,///@
...la source