Si 1 no se cuenta como factor, entonces
- 40 tiene dos factores vecinos (4 y 5)
- 1092 tiene dos factores vecinos (13 y 14)
- 350 no tiene dos factores vecinos (de sus factores 2, 5, 7, 10, 14, 25, 35, 50, 70 y 175, no hay dos consecutivos)
La proporción de enteros positivos que tienen esta propiedad es la proporción divisible por cualquiera de 6 (2 × 3), 12 (3 × 4), 20 (4 × 5), 30, 56,…. Si solo calculamos la proporción divisible por el primer n de estos, obtenemos una aproximación que se vuelve más precisa a medida que n aumenta.
Por ejemplo, para n = 1 , encontramos la proporción de enteros divisibles por 2 × 3 = 6, que es 1/6. Para n = 2 , todos los enteros divisibles por 3 × 4 = 12 también son divisibles por 6, por lo que la aproximación sigue siendo 1/6. Para n = 3 , la proporción de enteros divisibles por 6 o 20 es 1/5, y así sucesivamente.
Aquí están los primeros valores:
1 1/6 0.16666666666666666
3 1/5 0.20000000000000000
6 22/105 0.20952380952380953
9 491/2310 0.21255411255411255
12 2153/10010 0.21508491508491510
15 36887/170170 0.21676558735382265
21 65563/301070 0.21776663234463747
24 853883/3913910 0.21816623274423785
27 24796879/113503390 0.21846817967287144
Para valores de n entre los valores proporcionados, la salida debe ser la misma que la salida para el valor anterior (por ejemplo, n = 5 → 1/5).
Su programa debe tomar n y generar una respuesta fraccionaria o decimal. Puede tomar n en cualquier desplazamiento (por ejemplo, indexación 0 o indexación 2 en esta secuencia, en lugar de indexación 1).
Para la salida decimal, su programa debe tener una precisión de al menos 5 dígitos para todos los casos de prueba indicados.
La puntuación es el código de golf , con el código más corto ganador.
Inspirado por ¿Qué proporción de enteros positivos tienen dos factores que difieren en 1? por marty cohen - específicamente, por la respuesta de Dan .
Respuestas:
Jalea ,
14 1310 bytes-1 usando la idea de Erik the Outgolfer para tomar la media de una lista de ceros y unos.
-3 mediante la indexación 3 (como se permite en la pregunta) - gracias a Dennis por señalar esto.
Un enlace monádico que acepta un número entero
n+2
, lo que produce un flotador.Pruébalo en línea! (¡muy ineficiente ya que prueba la divisibilidad en el rango)[ 2 , ( n + 2 ) ! ]
(Comenzó como
+2µḊPƝḍⱮ!§T,$Ẉ
, tomandon
y cediendo[numerator, denominator]
, sin reducir)¿Cómo?
fuente
!
lugar deæl/
... Ah, las alegrías de las reglas cambian mientras duerme.P
para bajar a 13?Ẹ€
? Me temo queP
es lo mismo׃1$
, así que no funcionará. (Y eso sería 14 de todos modos ...) Si en lugar deæl/
, tal vez (P
es LCM * k después de todo).æl/
æl/
supongo. (El golf nocturno tiene problemas ...) EDITAR: Sí, aunque tendré que reducir la discusión sobre TIO a4
...: P05AB1E , 15 bytes
Puerto de la respuesta Jelly de @JonathanAllan , por lo que también es extremadamente lento.
Pruébelo en línea o verifique los primeros tres casos de prueba .
Explicación:
fuente
JavaScript (ES6),
94 9290 bytesGuardado 2 bytes gracias a @Shaggy + 2 bytes más desde allí
Devuelve una aproximación decimal.
Pruébalo en línea!
JavaScript (ES6), 131 bytes
Una solución mucho más larga que devuelve un resultado exacto como un par .[numerator,denominator]
Pruébalo en línea!
fuente
Jalea , 12 bytes
Pruébalo en línea!
-2 gracias a la sugerencia de Jonathan Allan de reemplazar el LCM con el producto (es decir, el LCM multiplicado por un número entero).
Dennis notó que también puedo indexar 2.
fuente
Carbón , 26 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Inevitablemente ineficiente (O (n! ²)) por lo que solo funciona hasta
n=4
en TIO. Explicación:Ingrese
n
y calcule los primerosn
productos de factores vecinos.Tome el producto de todos esos factores y úselo para calcular la proporción de números que tienen al menos uno de esos factores.
La versión menos lenta de 30 bytes es solo O (n!), Por lo que puede hacer hasta
n=6
TIO:Pruébalo en línea! El enlace es a la versión detallada del código.
La versión más rápida de 46 bytes es solo O (mcm (1..n + 2)), por lo que puede hacer hastan=10
TIO:Pruébalo en línea! El enlace es a la versión detallada del código.La versión más rápida de 45 bytes es solo O (2ⁿ), por lo que puede hacer hasta
n=13
TIO:Pruébalo en línea! El enlace es a la versión detallada del código.
La versión más rápida de 54 bytes utiliza un LCM más eficiente, por lo que puede hacer hasta
n=18
TIO:Pruébalo en línea! El enlace es a la versión detallada del código.
fuente
Wolfram Language (Mathematica) ,
69686152 bytesPruébalo en línea!
3 indexados. Al principio iba a usar,
LCM@@
pero me di cuenta de que#!
sería más corto ... pero ahora tiene mucha memoria paraRange[#!]
...Logramos jugar golf por 2 bytes, lo cual fue agradable.
Solución numérica anterior (56 bytes):
Pruébalo en línea!
2 indexados. Más eficiente cuando
#!>5^8
(#>9
suponiendo que#
es un número entero).fuente
Python 2 , 78 bytes
Pruébalo en línea!
Devuelve el decimal aproximado a +5 dígitos; utiliza el ingenuo enfoque de fuerza bruta que xnor sugiere en los comentarios sobre la pregunta.
fuente