Definiciones
Función Euler Phi (AKA totient function ): una función que toma un número positivo y devuelve el número de números positivos menores que el número dado que son primos con el número dado. Se denota como
φ(n)
.Número accesible : si existe un número entero positivo
x
tal queφ(x) == n
, entoncesn
es accesible .
Tarea
Escriba una función / programa para determinar si se puede alcanzar un entero positivo dado.
Entrada
Un número positivo, en cualquier formato razonable. Se puede suponer que el número está dentro de la capacidad del idioma. Se acepta la entrada unaria.
Salida
Dos valores consistentes, uno para números alcanzables y el otro para números inalcanzables. Los dos valores pueden ser cualquier cosa, siempre que sean consistentes.
Casos de prueba
Los números alcanzables a continuación 100
son:
1, 2, 4, 6, 8, 10, 12, 16, 18, 20, 22, 24, 28, 30, 32, 36, 40, 42, 44, 46, 48, 52, 54, 56, 58, 60, 64, 66, 70, 72, 78, 80, 82, 84, 88, 92, 96
( A002202 en OEIS)
Reglas
Se aplican lagunas estándar .
Criterio ganador
Este es el código de golf . Presentación con el menor recuento de bytes gana.
Referencias
fuente
phi(n) = count { m : 1 <= m <= n AND (m,n) are coprime }
... ¿es eso cierto?Respuestas:
Gelatina ,
76 bytesNo exactamente rápido. Devuelve 1 o 0 .
Pruébalo en línea!
Cómo funciona
fuente
Mathematica, 28 bytes
Al igual que la respuesta Jelly de Dennis, calculamos los valores φ de todos los números hasta el cuadrado de la entrada y vemos si la entrada aparece allí. Devuelve
False
si la entrada es accesible yTrue
si no lo es. Sí, eso es confuso. PeroFreeQ
es un byte más corto queMatchQ
, y oye, la especificación dice dos valores consistentes> :)fuente
JavaScript (ES6),
9082 bytesDevoluciones
0
otrue
.Esto se basa en el supuesto de que si x existe, entonces x ≤ 2n . Si se demuestra que es falso, se debe actualizar para usar en
x=n*n
lugar dex=n*2
(mismo tamaño, mucho más lento).Un caso de borde es n = 128 que requiere calcular ϕ (255) .
Manifestación
Mostrar fragmento de código
fuente
n=2
,n=8
,n=128
,n=32768
yn=2147483648
.Axioma, 56 bytes
no sé si es correcto ... código de prueba y resultados
El rango 1 .. (2 * x) estaría bien hasta que la entrada x = 500 ...
fuente
Pari / GP , 34 bytes
Devuelve
0
si es accesible,1
si no.Pruébalo en línea!
fuente
05AB1E , 5 bytes
Explicación:
Pruébalo en línea!
fuente
05AB1E ,
1312 bytesEDITAR : se guardó un byte porque la entrada se reutiliza si la pila no tiene suficientes elementos.
Salidas 1 si se puede alcanzar, 0 si no.
Se basa en la suposición de que x ≤ 2n si existe.
Pruébalo en línea!
Cómo funciona
fuente
C, 123 bytes
Probar en línea
fuente