Un número superabundante es un número entero n que establece un nuevo límite superior para su relación con la función de suma de divisores σ. En otras palabras, n es superabundante si y solo si, para todos los enteros positivos x que son menores que n :
Para algunos de los valores:
n σ(n) σ(n)/n superabundant
1 1 1.0000 yes
2 3 1.5000 yes
3 4 1.3333 no
4 7 1.7500 yes
5 6 1.2000 no
6 12 2.0000 yes
7 8 1.1429 no
8 15 1.8750 no
9 13 1.4444 no
Puede encontrar una lista más larga de estos (para casos de prueba) en OEIS A004394 .
Un caso de prueba negativa altamente recomendado (si su intérprete puede manejarlo) es 360360, ya que se vincula con el último número superabundante.
Reto
Su programa debe tomar un solo entero positivo y generar un valor verdadero o falso que represente si ese entero es superabundante.
Como se trata de código de golf , gana la respuesta más corta en bytes.
Æs÷$ÐṀ=
por 7 bytes. No me di cuentaÐṀ
rangificado, es útil saberlo.360360
. De hecho, esta fue mi versión inicial360360
?360360
es el primer número en el que fallaría (creo), porque es el primer número que vincula un resultado que ocurrió antes. (y nuestro resultado sería[0, 1]
)Haskell , 73 bytes
-1 byte gracias al Sr. Xcoder. -7 bytes gracias a Laikoni.
Pruébalo en línea!
El sistema de tipos de Haskell no es muy golfoso ...
fuente
Haskell ,
646361 bytes-1 byte gracias al Sr. Xcoder .
-2 bytes gracias a Lynn .
Pruébalo en línea!
fuente
Octava , 41 bytes
Pruébalo en línea!
Explicación
fuente
J , 35 bytes
¡Gracias a Mr.Xcoder por encontrar el problema y a Cole por solucionarlo!
Pruébalo en línea!
fuente
360360
(vea el desafío para obtener más detalles: un caso de prueba negativa altamente recomendado es 360360, porque se vincula con el último número superabundante ).#.~
(sinceramente, toda la función de suma de divisores es realmente agradable). Lo que estaba mal por cierto es que, aunque la idea de hacer{:=>./
es inteligente, no satisface la parte "mayor que" de la pregunta.(1#.{:(]*0=|~)])\
. Sin embargo, algo anda mal, ¿tal vez tienes algunos pensamientos?(1#.]*0=|~)1+i.
es un gancho y no encaja tan fácilmente en su lugar :)Julia 0.6 , 52 bytes
Pruébalo en línea!
Esta solución utiliza números racionales para garantizar la corrección en caso de igualdad. (La prueba 360360 tomó casi 10 minutos).
Usando coma flotante, se pueden guardar 2 bytes con la división izquierda:
fuente
Pyth , 14 bytes
( FryAmTheEggman guardó 1 byte)
Pruébalo aquí! o ver más casos de prueba.
Solo mi presentación obligatoria de Pyth, que probablemente sea golfable.
¿Cómo?
fuente
05AB1E , 10 bytes
Pruébalo en línea! o como un conjunto de pruebas
Explicación
fuente
360360
(vea el desafío para obtener más detalles: un caso de prueba negativa muy recomendable es 360360, porque se vincula con el último número superabundante ).Python 3 , 77 bytes
-1 byte gracias a Rod. -3 bytes gracias a Dennis.
Pruébalo en línea!
fuente
R usando
numbers
, 59 bytesfuente
Mathematica,
5350 bytesPura función. Toma un entero como entrada y devuelve
True
oFalse
como salida.fuente
Tr@Divisors@#
funciona?Japt v2.0a0,
1216 bytes¡Parece que el cerebro privado de sueño no puede mejorar más en esto!
Devoluciones
1
por veracidad o0
por falsey.Intentalo
Sacrificado 4 bytes para manejar
360360
.Explicación
U
.Æ Ã
crea una matriz de números enteros de0
aU-1
y pasa a través de cada uno de la siguiente función comoX
.â
obtiene los divisores deU
.÷U
divide cada uno de esos porU
.x
suma los resultados.Xâ
obtiene los divisores deX
.÷X
divide cada uno de esos porX
.x
suma los resultados.>
comprueba si el primer resultado es mayor que el segundo.×
reduce la matriz resultante de booleanos por multiplicación.fuente
360360
u otros enteros similares: un caso de prueba negativa altamente recomendado (si su intérprete puede manejarlo) es 360360, porque se vincula con el último número superabundanteAPL + WIN, 37 bytes
Solicita entrada de pantalla.
fuente
C (gcc), 99 bytes
Pruébalo en línea!
C, 108 bytes
Pruébalo en línea!
fuente
s
necesita devolver un flotador?s(n)/n
cons(i)/i
.Swift ,
120118 bytesToma algo de tiempo (alrededor de 6 segundos en TIO) compilar debido a las declaraciones de tipo implícitas en Swift.
Pruébalo en línea!
fuente
Jalea , 12 bytes
Pruébalo en línea! o Encuentra todos los números superabundantes por debajo de 1000.
porque odio los puntos flotantes.
fuente
Funky , 79 bytes
Explicado
Esto primero define la función
d
que es laσ
función, y esta es la versión de golf dePodemos establecer i en 0, porque
i*n%0
siempre será igual0*...
, por lo tanto0
.La siguiente mitad de esto define la función
f
, que es la función Superabandunce, y es solo la forma de golf deY esto solo comprueba, como sugiere la especificación de desafío, que todos los enteros de 1 a n-1 tienen un valor
d(n)/n
menor que la entrada.Pruébalo en línea!
fuente
APL (Dyalog) , 33 bytes
Pruébalo en línea!
fuente
Casco , 9 bytes
Pruébalo en línea! Demasiado lento para el caso de prueba 360360.
Explicación
fuente
£ü¤<§ṁ/ḊN
. Creación de la lista completa de números superabundantesPerl 5, 84 bytes
requiere
-E
(gratis)una implementación directa de la especificación, golfizada
fuente
APL (NARS), 61 caracteres, 122 bytes
11π es la suma de funciones de factores
fuente