Étant donné un nombre naturel, n
écrivez un programme ou une fonction pour obtenir une liste de toutes les multiplications possibles à deux facteurs pouvant être utilisées n
. Pour mieux comprendre ce qui est prétendu , vous pouvez aller à http://factornumber.com/?page=16777216 pour voir quand n
est 16777216
nous obtenons la liste suivante:
2 × 8388608
4 × 4194304
8 × 2097152
16 × 1048576
32 × 524288
64 × 262144
128 × 131072
256 × 65536
512 × 32768
1024 × 16384
2048 × 8192
4096 × 4096
Pas besoin d'imprimer des choses comme ici. L'exigence est que chaque entrée (paire de facteurs) soit bien distinguée les unes des autres et à l'intérieur de chaque paire, le premier facteur soit également bien distingué de l'autre. Si vous choisissez de renvoyer une liste / un tableau, l'élément interne peut être une liste / un tableau avec deux éléments, ou une structure de votre langage qui prend en charge une paire de choses comme C ++ std::pair
.
N'imprimez pas la multiplication par 1 entrée, et ne répétez pas les entrées avec le premier facteur commué par le second, car elles sont assez inutiles.
Aucun gagnant; ce sera un golf par code de base linguistique.
la source
30
?Réponses:
Java (OpenJDK 8) ,
816665 octets++j<=i/j
->j++<i/j
.Essayez-le en ligne!
Ancien (pour référence)
Java (OpenJDK 8) , 126 octets
Essayez-le en ligne!
Première soumission de codegolf et première utilisation de lambda. Futur moi, veuillez me pardonner le code.
la source
05AB1E , 8 octets
Essayez-le en ligne!
la source
C (gcc) ,
585453 octetsEssayez-le en ligne!
la source
Python 2 , 51 octets
Essayez-le en ligne!
51 octets (merci à Luis Mendo pour un octet)
Essayez-le en ligne!
51 octets
Essayez-le en ligne!
la source
[f]
.lambda n:[(n/k,k)for k in range(1,n)if(k*k<=n)>n%k]
Haskell, 38 octets
Essayez-le en ligne!
la source
APL (Dyalog) , 28 octets
Essayez-le en ligne!
la source
Perl 6 , 38 octets
Essayez-le
Étendu:
la source
Brachylog , 8 octets
Essayez-le en ligne!
Explication
La
~×
partie n'inclut pas de 1 dans sa sortie, donc pour l'entrée N, elle donne [N] au lieu de [1, N] , qui est ensuite éliminé parĊ
. Je ne sais pas vraiment pourquoi≜
est nécessaire ...la source
≜
est nécessaire car sinon il n'y a pas de points de choix pourᵘ
: une liste de longueur 2 dont le produit est l'entrée est la seule réponse si vous ne demandez pas réellement les valeurs de la liste.Japt , 9 octets
Testez-le en ligne! Renvoie un tableau de tableaux, avec quelques null à la fin;
-R
indicateur ajouté pour afficher la sortie plus clairement.la source
null
s à la fin.Gelée , 8 octets
Un lien monadique prenant un nombre et renvoyant une liste de listes (paires) de nombres.
Essayez-le en ligne! (time out sur TIO pour l'
16777216
exemple car cela créerait une liste de 68,7 milliards de paires et filtrerait vers le bas pour celles avec le bon produit!)Comment?
*
Ḋ
, dequeue, crée implicitement une plage d'une entrée numérique avant d'agir, et la fonction de plage plante implicitement son entrée, donc avec, disons,n=24
le résultat de½
est4.898...
; la gamme devient[1,2,3,4]
; et le résultat retiré de la file d'attente est[2,3,4]
** De la même manière que ci-dessus,
p
le produit cartésien crée des plages pour la saisie numérique - ici, le bon argument estn
donc le bon argument devient[1,2,3,...,n]
avant que le produit cartisien réel ait lieu.la source
Husk , 8 octets
Essayez-le en ligne!
Explication
la source
JavaScript (ES6), 55 octets
Démo
Afficher l'extrait de code
Essayez-le en ligne!
la source
6
t-il?Python 2 , 59 octets
Essayez-le en ligne!
la source
range(2,N)
et de la stocker sous forme de liste, mais la mémoire allouée ne suffit pas. On pourrait essayer de le remplacerrange
parxrange
(le générateur de plage de Python 2), bien que cela dépasse la minute d'exécution maximale de TIO. Sur une machine avec suffisamment de mémoire et de temps, ce programme doit se terminer et renvoyer la bonne réponse.Gelée , 9 octets
Essayez-le en ligne!
la source
Octave , 42 octets
Essayez-le en ligne!
la source
PHP, 70 octets
Sous forme de chaîne (70 octets):
En tant que vidage de tableau (71 octets):
(Je ne sais pas si je peux utiliser return $ b; au lieu de print_r car il ne produit plus le tableau, sinon je peux économiser 2 octets ici.)
Le tableau donne les résultats comme:
la source
Gelée , 12 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
Wolfram Language (Mathematica) , 41 octets
Essayez-le en ligne!
est l'Function
opérateur, qui introduit une fonction sans nom avec un paramètre nommén
.la source
Facteur , 58
Eh bien, il doit y avoir un facteur dans cette question!
C'est une citation.
call
avec le numéro sur la pile, laisse unassoc
(un tableau de paires) sur la pile.Je ne sais jamais si toutes les importations comptent ou non, car elles font partie de la langue. Celui-ci utilise:
(S'ils comptent, je devrais chercher une solution plus longue avec des importations plus courtes, ce qui est un peu idiot)
En un mot:
la source
Ruby, 43 bytes
Try it online!
How it works:
For every number up to sqrt(n), generate the pair
[[x, n/x]]
, then take then%x
th element of this array. Ifn%x==0
this is[x, n/x]
, otherwise it'snil
. when done, remove allnil
from the list.la source
Pari/GP,
493438 bytesTry it online!
Set builder notation for all pairs
[d, n/d]
whered
runs through all divisorsd
ofn
subject tod > 1
andd <= n/d
.Huge improvement by alephalpha.
la source
n->[[d,n/d]|d<-divisors(n),d<=n/d]
1
.Husk,
1412 bytesTry it online!
Explanation
la source
APL+WIN, 32 bytes
Explanation:
la source
Add++,
1815 bytesTry it online!
How it works
la source
Mathematica, 53 bytes
Try it online!
la source
Befunge-93, 56 bytes
Try It Online
la source
Julia 0.6, 41 bytes
Try it online!
Redefines the inbuild unary operator
~
and uses an array comprehension to build the output.div(x,y)
is neccessary for integer division.x/y
saves 5 bytes but the output is~4=(2,2.0)
.Int(floor(√x))
.la source
APL NARS 99 chars
9+46+41+3=99 Test: (where not print nothing, it return something it return ⍬ the list null one has to consider as "no solution")
la source
Pyt,
6765 bytesI'm pretty sure this can be golfed.
Basically, the algorithm generates a list of all of the divisors of the input (let's call it n), makes the same list, but flipped, interleaves the two (e.g., if n=24, then, at this point, it has [1,24,2,12,3,8,4,6,6,4,8,3,12,2,24,1]), and prints out the elements from index 2 until half the array length, printing each number on a new line, and with an extra new line in between every pair.
Most of the work is done in actually managing the stack.
Saved 2 bytes by using increment function.
la source
Perl 5, 50 bytes
Ungolfed:
Try it online.
la source