(Inspirado aleatoriamente em /mathpro//q/339890 )
(relacionados: 1 , 2 )
Dada uma lista de entrada de números primos distintos (por exemplo, [2, 5, 7]
) e um número inteiro n
, produz todos os números inteiros positivos estritamente menores que o n
que contém apenas os números primos como divisores. Para entrada [2, 5, 7]
e n=15
isso significa uma saída de [2, 4, 5, 7, 8, 10, 14]
.
Exemplos adicionais
[list] n | output
[2, 5, 7] 15 | [2, 4, 5, 7, 8, 10, 14]
[2, 5, 7] 14 | [2, 4, 5, 7, 8, 10]
[2] 3 | [2]
[2] 9 | [2, 4, 8]
[103, 101, 97] 10000 | [97, 101, 103, 9409, 9797, 9991]
[97, 101, 103] 104 | [97, 101, 103]
Regras e esclarecimentos
- A lista de entrada é garantida como não vazia, mas pode ser apenas um único elemento
- Você pode assumir que a lista de entrada é pré-classificada da maneira que for mais conveniente
n
sempre será maior que o maior elemento da lista de entrada- Como, por exemplo,
2**0 = 1
você pode opcionalmente incluir1
na sua lista de saída - Entrada e saída podem ser fornecidas por qualquer método conveniente
- Você pode imprimir o resultado em STDOUT ou retorná-lo como resultado da função
- Um programa completo ou uma função são aceitáveis
- Se aplicável, você pode assumir que os números inteiros de entrada / saída se encaixam no
int
intervalo nativo do seu idioma - As brechas padrão são proibidas
- Este é o código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence
1
a saída.[2, 3, 7]
você não pode usar5
.Respostas:
Stax , 6 bytes
Execute e depure-o em staxlang.xyz!
Descompactado (7 bytes) e explicação:
fonte
05AB1E , 6 bytes
Pega o número inteiro como primeira entrada e lista como segunda. Inclui o opcional
1
na saída.Experimente online ou verifique todos os casos de teste .
Explicação:
Duas alternativas de 6 bytes fornecidas pelo @Grimy :
Experimente online.
Este é muito lento (o
[2,5,7], 15
caso de teste já atinge o tempo limite), mas menos como as outras duas abordagens:Ao contrário dos outros dois programas acima, ele pega a lista como primeira entrada e o inteiro como segunda.
1
Porém, ele inclui o opcional na saída.Experimente online.
fonte
sиPѦʒ›
. Eu pensei que tinha um 6, mas não parece haver uma maneira de contornar usandos
/I
/¹
4747561509943000000000000000
. ;)GNfåP–
JavaScript (ES6),
64 ... 5250 bytesRecebe a entrada como
(n)(primes)
onde primos é um conjunto. Saídas modificando o conjunto.Experimente online!
Comentado
fonte
Python 3 ,
6865 bytesExperimente online!
-3 bytes graças a @xnor
A função usa uma sequência primária e um inteiro n como entradas. A saída é uma lista que inclui 1.
Ungolfed:
Experimente online!
fonte
c*s<n*s
. Editar:n//c*s
é mais curto.Haskell , 51 bytes
x
p
mapM((<$>[0..n]).(^))p
product
n
p
Experimente online!
fonte
Haskell , 39 bytes
Experimente online!
Verifica se
k
é divisível apenas por primosl
, verificando se o produto del
uma potência elevada é divisível pork
.fonte
Python 2 , 65 bytes
Experimente online!
Verifica se
k
é divisível apenas por primosl
, verificando se o produto del
uma potência elevada é divisível pork
.Se
l
pode ser tomado como uma lista de stringseval("*".join(l))
salva 3 bytes maisreduce(int.__mul__,l)
e pode ser usado em Python 3 que carecereduce
.Python 3 , 64 bytes
Experimente online!
Uma função que imprime na ordem inversa e termina com erro.
A solução recursiva abaixo seria mais curta se
n
ela própria estivesse incluída na lista. Tentei calcular recursivamente o produtol
também, mas isso foi mais longo.62 bytes (não funciona)
Experimente online!
fonte
Gaia , 10 bytes
Experimente online!
Eu nunca usei
‡
com uma mônada antes, é bastante útil para manipulação de pilhas.fonte
J , 24 bytes
Experimente online!
fonte
Geléia , 7 bytes
Experimente online!
Um link diádico que toma o limite superior exclusivo como argumento esquerdo e a lista de números primos como direito. Retorna uma lista que inclui 1 e os números compostos apenas dos números primos fornecidos.
Uma alternativa 7 seria
ṖÆfḟ¥Ðḟ
fonte
Python 2 , 98 bytes
Experimente online!
fonte
Japonês
-f
,118 bytesTente
fonte
Japonês
-f
, 7 bytesTente
fonte
1
na saída, o que não deveria. Comecei comk e!øV
a minha solução também, mas precisava dos 2 bytes extras para filtrar0
&1
.Since, e.g., 2**0 = 1, you can optionally include 1 in your output list
Ruby
-rprime
, 61 bytesExperimente online!
fonte
Retina 0.8.2 , 64 bytes
Experimente online! A lista inclui casos de teste menores (
10000
atinge o tempo limite devido a todas as seqüências longas). Recebe entrada na ordemn f1 f2 f3...
(os fatores não precisam ser primos, mas precisam ser coprime). Saída inclui1
. Explicação:Converta para unário.
Gere uma lista de 0 a
n-1
, em decimal e unário.Divida repetidamente o unário por quaisquer fatores disponíveis.
Envie os números decimais para os quais o número unário foi reduzido
1
.fonte
Pitão , 10 bytes
Experimente online!
Aceita entrada como
[[primes...], n]
fonte
Perl 6 , 27 bytes
Experimente online!
Porta da solução Haskell da xnor. Também gera 1.
fonte
Carvão ,
2220 bytesExperimente online! Link é a versão detalhada do código. Muito lento para o caso de teste maior. Explicação:
Resposta anterior mais rápida de 22 bytes:
Experimente online! Link é a versão detalhada do código. Saída inclui
1
. Explicação:Pressione
1
para a lista vazia predefinida.Faça um loop sobre a lista, incluindo todos os itens enviados durante o loop.
Multiplique o item atual por cada prime e faça um loop sobre os produtos.
Verifique se o produto é um novo valor.
Nesse caso, empurre-o para a lista.
Imprima a lista.
fonte
C (clang) , 115 bytes
Experimente online!
Uma solução à base de Peneira de Eratóstenes.
(Inclui 1 na saída)
Graças à sugestão @ceilingcat: printf (x [i] + "\ 0% d", i ++) em vez de x [i] && printf ("% d", i), i ++ suponha que ele mude o ponteiro do literal, mas não não encontrei nenhuma documentação, se alguém puder me dar algumas idéias, seria bem-vindo.
fonte
x[i]==1
então a string é"%d "
. Sex[i]==0
então a string é""
. As cadeias C são terminadas em nulo, portanto, um caractere nulo explícito termina a sequência. Este hack também abusa de um comportamento indefinido no clang relacionado aoi++
.