Un número secundario es un entero positivo cuyos factores primos (sin multiplicidad) son todos menores o iguales a su raíz cuadrada. 4
es un número secundario, porque su único factor primo es 2
, que es igual a su raíz cuadrada. Sin embargo, 15
no es un número secundario, porque tiene 5
como factor primo, que es mayor que su raíz cuadrada ( ~ 3.9
). Debido a que todos los números primos se tienen como factores primos, ningún número primo es un número secundario. Los primeros números secundarios son los siguientes:
1, 4, 8, 9, 12, 16, 18, 24, 25, 27, 30, 32, 36, 40, 45, 48, 49, 50, 54, 56
Un número terciario se define de manera similar, excepto que todos los factores primos deben ser menores o iguales que su raíz cúbica. Los primeros números terciarios son los siguientes:
1, 8, 16, 27, 32, 36, 48, 54, 64, 72, 81, 96, 108, 125, 128, 135, 144, 150, 160, 162
En general, un número n-ary es uno cuyos factores primos son todos menores o iguales a su enésima raíz. Por lo tanto, un número entero positivo es un n
número -ario si cada uno de sus factores primos satisface . Por lo tanto, los números primarios son todos enteros positivos (todos los factores primos menores o iguales a ellos mismos), los números cuaternarios tienen todos sus factores primos menores o iguales que su cuarta raíz, y así sucesivamente.
El reto
Teniendo en cuenta los números enteros k
y n
como entradas, la salida de la k
XX n
número ary. k
puede ser un índice cero o uno (su elección), y n
siempre será positivo.
Ejemplos
Estos son los primeros 20 elementos en cada secuencia de hasta 10 números arios:
Primary: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
Secondary: 1, 4, 8, 9, 12, 16, 18, 24, 25, 27, 30, 32, 36, 40, 45, 48, 49, 50, 54, 56
Tertiary: 1, 8, 16, 27, 32, 36, 48, 54, 64, 72, 81, 96, 108, 125, 128, 135, 144, 150, 160, 162
Quarternary: 1, 16, 32, 64, 81, 96, 108, 128, 144, 162, 192, 216, 243, 256, 288, 324, 384, 432, 486, 512
5-ary: 1, 32, 64, 128, 243, 256, 288, 324, 384, 432, 486, 512, 576, 648, 729, 768, 864, 972, 1024, 1152
6-ary: 1, 64, 128, 256, 512, 729, 768, 864, 972, 1024, 1152, 1296, 1458, 1536, 1728, 1944, 2048, 2187, 2304, 2592
7-ary: 1, 128, 256, 512, 1024, 2048, 2187, 2304, 2592, 2916, 3072, 3456, 3888, 4096, 4374, 4608, 5184, 5832, 6144, 6561
8-ary: 1, 256, 512, 1024, 2048, 4096, 6561, 6912, 7776, 8192, 8748, 9216, 10368, 11664, 12288, 13122, 13824, 15552, 16384, 17496
9-ary: 1, 512, 1024, 2048, 4096, 8192, 16384, 19683, 20736, 23328, 24576, 26244, 27648, 31104, 32768, 34992, 36864, 39366, 41472, 46656
10-ary: 1, 1024, 2048, 4096, 8192, 16384, 32768, 59049, 62208, 65536, 69984, 73728, 78732, 82944, 93312, 98304, 104976, 110592, 118098, 124416
ÆfṪ*³<‘
porque sabemos que si algún factor falsificaẠ
el que está a la derecha, lo hará.Brachylog , 21 bytes
Pruébalo en línea!
Esta respuesta tiene un índice.
Explicación
fuente
JavaScript (ES7),
9590 bytesRazonablemente rápido pero tristemente limitado por el número máximo de recurrencias.
Cómo funciona
En lugar de factorizar un número entero i y verificar que todos sus factores primos son menores o iguales que x = floor (i 1 / n ) , intentamos validar el último supuesto directamente. Ese es el propósito de la función interna F () :
Verificamos si algún número entero d en [2 ... i 1 / n ] divide i . Si no, la suposición no es válida y devolvemos 1 . En caso afirmativo, repetimos el proceso de manera recursiva en i = i / d hasta que falle o el entero inicial se tenga en cuenta por completo ( i == 1 ), en cuyo caso disminuiremos k . A su vez, la función externa f () se llama de forma recursiva hasta k == 0 .
Nota: Debido a errores de redondeo de coma flotante como
125**(1/3) == 4.9999…
, por ejemplo , el valor real calculado para x es piso ((i + 1) 1 / n ) .Manifestación
(Aquí con una versión ES6 de 97 bytes para una mejor compatibilidad).
Mostrar fragmento de código
fuente
JavaScript (ES7),
9379 bytesNo podía entender la respuesta de Arnauld, así que escribí la mía y convenientemente llegó en dos bytes menos. Editar: guardado 14 bytes con ayuda de @ETHproductions. Sin golf:
fuente
++i**(1/n)
lugar dei**(1/n)
debido a errores de redondeo de coma flotante como125**(1/3) == 4.999...
. (La forma en que está escrito, creo que su código no se ve afectado por esto.)m
para eliminar otros dos bytes.Haskell, 86 bytes
Explicación:
(
%%%%
denota el código de la línea de arriba)fuente
filter
con un lambda rara vez vale la pena, una comprensión de la lista suele ser más corta:m#n=(0:1:[k|k<-[2..],last[n|n<-[2..k],all((>0).rem n)[2..n-1],k
remn<1]^n<=k])!!m
.0:
, porque la indexación puede estar basada en 0.m#n=[k|k<-[1..],last[n|n<-[1..k],all((>0).rem n)[2..n-1],k
remn<1]^n<=k]!!m
Pyth, 13 bytes
Pruébalo en línea.
Funciona realmente igual que la solución Jelly.
fuente
Perl 6, 88 bytes
My accidental insight is that you don't need to look at every factor of
n
, just the largest one, which is what the internal functionf
computes. Unfortunately, it blows the stack with larger inputs.Robustness can be improved by adding a primality test, using the built-in
is-prime
method on Ints, at a cost of several more characters.fuente
Husk, 10 bytes
Try it online!
Explanation
Took me a while to figure out using
→
on the empty list returns1
instead of-Inf
for▲
which leaves1
in the list (otherwise that would cost 2 bytes to prepend it again):fuente
R, 93 bytes
Zero-indexed.
It is a recursive function that just keeps going until it finds the next number in line. Uses to
numbers
package to find the prime factors.fuente
MATL, 21 bytes
This solution uses one-based indexing and the inputs are
n
andk
, respectively.Try it Online!
Explanation
fuente
~
to repurpose the second input :-)Brachylog v2, 16 bytes
Try it online!
Credit to Dennis's Jelly solution for getting me thinking in the right direction.
Explanation
Here's a slightly ungolfed version that's easier to parse:
Helper predicate (line 2): input is the exponent n, output is unconstrained:
Main predicate (line 1): input is a list containing the index k (1-based) and the exponent n; output is unconstrained:
fuente
APL(NARS), 53 chars, 106 bytes
test:
fuente
Python 2, 114 bytes
Try it online!
1-indexed function.
fuente
Japt, 14 bytes
Takes
n
as the first input andk
(1-indexed) as the second.Try it
fuente