Se você já aprendeu sobre números primos na aula de matemática, provavelmente já teve que, a certa altura, determinar se um número é primo. Você provavelmente errou enquanto ainda os estava aprendendo, por exemplo, confundindo 39 com um primo. Bem, não se preocupe, pois 39 é um semiprime, ou seja, que é o produto de dois números primos.
Da mesma forma, podemos definir um k- quase primo como sendo o produto de k números primos. Por exemplo, 40 é o quarto 4-quase primo; 40 = 5 * 2 * 2 * 2, o produto de 4 fatores.
Sua tarefa é escrever um programa / função que aceita dois inteiros n e k como entrada e saída / retorno do n º k -quase número primo. Este é um código de golfe, portanto o programa mais curto em bytes vence.
Casos de teste
n, k => output
n, 1 => the nth prime number
1, 1 => 2
3, 1 => 5
1, 2 => 4
3, 2 => 9
5, 3 => 27
Diversos
Você deve gerar os primos por qualquer outro meio que não seja um simples formulário fechado, se esse formulário existir.
f
em termos def[n,1]
seja correta, uma vez que as listas de quase-números primos contêm números ímpares (por exemplo, os dois últimos exemplos, que não são expressáveis como o produto de uma potência de dois e de um primo). (E também diz issof[n,1] == 2*f[n,1]
.)Respostas:
Pitão, 9 bytes
Explicação
Experimente aqui!
Ou tente uma suíte de testes!
fonte
Braquilog , 9 bytes
Derrotar @sundar usando metade do número de bytes
Explicação
Experimente online!
fonte
Pyke (confirmação 29), 8 bytes (não competitivo)
Explicação:
fonte
Julia,
84785957 bytesEsta é uma função recursiva que aceita dois números inteiros e retorna um número inteiro. A abordagem aqui é verificar a soma dos expoentes na fatoração primária contra
k
.Ungolfed:
fonte
Geléia, 9 bytes
Experimente online!
Como funciona
fonte
Braquilog , 18 bytes
Experimente online!
fonte
Mathematica,
5651 bytesAviso: Isso é teórico. Não execute para nenhum valor> 4. Substitua 2 ^ ## por uma expressão mais eficiente.
fonte
n=1
.PrimeOmega[1]
avalia para0
,&&#>1
é redundante.Mathematica,
5349 bytesGera uma lista de números inteiros com base em um limite superior flexível.
PrimeOmega
conta os fatores primos com multiplicidades, os primos k- quaseCases
são retirados da lista e o n- ésimo membro desse subconjunto é retornado.fonte
2^Sequence[1,2]
ver por que o último falha.Haskell, 88 bytes
Provavelmente pode ser jogado muito mais, pois ainda sou um novato em Haskell. A função
q
retorna o número de fatores de seu argumento ef
usa isso para obter onth
elemento de uma lista feita de todos os números que possuemk
fatores.fonte
MATL, 14 bytes
Experimente no MATL Online
fonte
Python 3, 100 bytes
Esta é uma função muito simples de força bruta. Ele verifica todos os números que começam com 2 com
sympy
afactorint
função s até encontrarn
k
quase primos; nesse ponto, a função retorna on
th destes.Ungolfed:
Eu uso
sum(factorint(a).values())
porquefactorint
retorna um dicionário defactor: exponent
pares. Agarrar os valores do dicionário (os expoentes) e somar eles me diz quantos fatores primos existem e, portanto, qual ék
essek
primo quase primário.fonte
Python 2 , 76 bytes
Experimente online!
fonte