Dado um número natural, n
escreva um programa ou função para obter uma lista de todas as possíveis multiplicações de dois fatores que podem ser usadas para obter n
. Para entender melhor o que se pretende você pode ir para http://factornumber.com/?page=16777216 para ver quando n
é 16777216
que recebo a seguinte lista:
2 × 8388608
4 × 4194304
8 × 2097152
16 × 1048576
32 × 524288
64 × 262144
128 × 131072
256 × 65536
512 × 32768
1024 × 16384
2048 × 8192
4096 × 4096
Não há necessidade de imprimir coisas bonitas como aqui. O requisito é que cada entrada (par de fatores) seja bem distinta uma da outra e, dentro de cada par, o primeiro fator também seja bem distinto da outra. Se você optar por retornar uma lista / matriz, o elemento interno poderá ser uma lista / matriz com dois elementos ou alguma estrutura da sua linguagem que suporte um par de coisas como C ++ std::pair
.
Não imprima a multiplicação por 1 entrada, nem repita as entradas com o primeiro fator comutado pela segunda, pois elas são bastante inúteis.
Nenhum vencedor; será um código de idioma por idioma.
fonte
30
?Respostas:
Java (OpenJDK 8) ,
816665 bytes++j<=i/j
->j++<i/j
.Experimente online!
Antigo (para referência)
Java (OpenJDK 8) , 126 bytes
Experimente online!
Primeiro envio de codegolf e primeiro uso de lambda. Eu futuro, por favor, perdoe-me pelo código.
fonte
05AB1E , 8 bytes
Experimente online!
fonte
C (gcc) ,
585453 bytesExperimente online!
fonte
Python 2 , 51 bytes
Experimente online!
51 bytes (graças a Luis Mendo por um byte)
Experimente online!
51 bytes
Experimente online!
fonte
[f]
.lambda n:[(n/k,k)for k in range(1,n)if(k*k<=n)>n%k]
Haskell, 38 bytes
Experimente online!
fonte
APL (Dyalog) , 28 bytes
Experimente online!
fonte
Perl 6 , 38 bytes
Tente
Expandido:
fonte
Braquilog , 8 bytes
Experimente online!
Explicação
A
~×
peça não inclui 1s em sua saída; portanto, para a entrada N , fornece [N] em vez de [1, N] , que é posteriormente descartadoĊ
. Não sei ao certo por que≜
é necessário ...fonte
≜
é necessário porque, caso contrário, não há pontos de escolha paraᵘ
: uma lista de tamanho 2 cujo produto é a entrada é a única resposta se você não solicitar os valores da lista.Japonês , 9 bytes
Teste online! Retorna uma matriz de matrizes, com alguns valores nulos no final;
-R
sinalizador adicionado para mostrar a saída mais claramente.fonte
null
s no final.Geléia , 8 bytes
Um link monádico que pega um número e retorna uma lista de listas (pares) de números.
Experimente online! (o tempo limite é excedido no TIO, por
16777216
exemplo, pois ele criaria uma lista de 68,7 bilhões de pares e seria filtrada para aqueles com o produto correto!)Quão?
*
Ḋ
, desenfileirar, faz implicitamente um intervalo de uma entrada numérica antes de agir, e a função range implicitamente coloca sua entrada, assim com, digamos,n=24
o resultado de½
é4.898...
; o alcance se torna[1,2,3,4]
; e o resultado desenfileirado é[2,3,4]
** Da mesma forma que acima, o
p
produto cartesiano faz intervalos para entrada numérica - aqui o argumento correto é,n
portanto, o argumento correto torna-se[1,2,3,...,n]
antes do produto cartisiano real ocorrer.fonte
Casca , 8 bytes
Experimente online!
Explicação
fonte
JavaScript (ES6), 55 bytes
Demo
Mostrar snippet de código
Experimente Online!
fonte
6
?Python 2 , 59 bytes
Experimente online!
fonte
range(2,N)
e armazená-lo como uma lista, mas a memória alocada não é suficiente. Pode-se tentar substituirrange
porxrange
(gerador de intervalo do Python 2), embora isso exceda um minuto de tempo de execução máximo do TIO. Em uma máquina com memória e tempo suficientes, este programa deve terminar e retornar a resposta correta.Geléia , 9 bytes
Experimente online!
fonte
Oitava , 42 bytes
Experimente online!
fonte
PHP, 70 bytes
Como sequência (70 bytes):
Como despejo de matriz (71 bytes):
(não tenho certeza se posso usar return $ b; em vez de print_r, pois ele não gera mais a matriz, caso contrário, posso salvar 2 bytes aqui.)
A matriz fornece os resultados como:
fonte
Gelatina , 12 bytes
Experimente online!
Como funciona
fonte
Wolfram Language (Mathematica) , 41 bytes
Experimente online!
é oFunction
operador, que introduz uma função sem nome com o parâmetro nomeadon
.fonte
Fator , 58
Bem, tem que haver algum fator nessa questão!
É uma citação.
call
com o número na pilha, deixa umassoc
(uma matriz de pares) na pilha.Nunca tenho certeza se todas as importações contam ou não, pois fazem parte do idioma. Este usa:
(Se contar, devo procurar uma solução mais longa com importações mais curtas, o que é meio bobo)
Como uma palavra:
fonte
Ruby , 43 bytes
Experimente online!
Como funciona:
Para cada número até sqrt (n), gere o par e
[[x, n/x]]
, em seguida, pegue on%x
th elemento desta matriz. Se forn%x==0
esse o[x, n/x]
caso, énil
. Quando terminar, remova tudonil
da lista.fonte
Pari / GP ,
493438 bytesExperimente online!
Defina a notação do construtor para todos os pares em
[d, n/d]
qued
percorre todos os divisoresd
den
sujeito ad > 1
ed <= n/d
.Grande melhoria por alefhalpha.
fonte
n->[[d,n/d]|d<-divisors(n),d<=n/d]
1
.Casca ,
1412 bytesExperimente online!
Explicação
fonte
APL + WIN, 32 bytes
Explicação:
fonte
Adicionar ++ ,
1815 bytesExperimente online!
Como funciona
fonte
Mathematica, 53 bytes
Experimente online!
fonte
Befunge-93, 56 bytes
Experimente Online
fonte
Julia 0.6 , 41 bytes
Experimente online!
Redefine o operador unbuild inbuild
~
e usa uma compreensão de array para criar a saída.div(x,y)
é necessário para a divisão inteira.x/y
salva 5 bytes, mas a saída é~4=(2,2.0)
.Int(floor(√x))
.fonte
APL NARS 99 caracteres
9 + 46 + 41 + 3 = 99 Teste: (onde não imprime nada, retorna algo que retorna ⍬ a lista nula deve ser considerada como "nenhuma solução")
fonte
Pyt ,
6765 bytesTenho certeza de que isso pode ser jogado.
Basicamente, o algoritmo gera uma lista de todos os divisores da entrada (vamos chamá-lo n ), faz a mesma lista, mas invertida, intercala os dois (por exemplo, se n = 24, então, neste ponto, ele tem [ 1,24,2,12,3,8,4,6,6,4,8,3,12,2,24,1]) e imprime os elementos do índice 2 até metade do comprimento da matriz, imprimindo cada número em uma nova linha e com uma nova linha extra entre cada par.
A maior parte do trabalho é realizada no gerenciamento da pilha.
2 bytes salvos usando a função de incremento.
fonte
Perl 5, 50 bytes
Ungolfed:
Experimente online .
fonte