¿Hay un uso práctico para el comando del factor GNU?

17

Mirando a través de los Coreutils de GNU , vi el factorcomando, que nunca antes había notado.

Leyendo la página del manual:

Imprime los factores primos de cada NÚMERO entero especificado. Si no se especifica ninguno en la línea de comando, léalos desde la entrada estándar.

¿Hay un uso práctico factoro es solo un paquete de demostración / juguete?

Gavin Brock
fuente

Respuestas:

17

Wikipedia, "Factor (Unix)" con una toma interesante:

factor apareció por primera vez en la 5ta edición de Research Unix en 1974, como una utilidad "mantenida por el usuario" (sección 6 del manual). En la séptima edición en 1979, se trasladó a la sección principal de "comandos" del manual (sección 1). A partir de ahí, la utilidad de factor se copió a todas las demás variantes de Unix, incluidos los Unix comerciales y BSD. En algunas variantes de Unix, se clasifica como un "juego" más que una utilidad seria, y por lo tanto se documenta en la sección 6.

Por lo tanto, parece que a algunos usuarios les gusta jugar con factores primos y escribir factores, y una vez que existió, probablemente no haya una buena razón para no incluirlo como un comando en las versiones posteriores de Unix. Por lo tanto, los "usos prácticos" del factor pueden depender de lo que consideres práctico: si te gusta la teoría de los números primos, probablemente sea una gran herramienta / juego / lo que sea.

Oliver
fuente
6

Sé que en al menos un caso, para mí factorfue útil en el análisis de un gran archivo de datos de formato desconocido.

Si sospecha que un archivo tiene registros de longitud fija, los factores primos de la longitud del archivo proporcionan un punto de partida para determinar la longitud real del registro.

Codelahoma
fuente
4

Le dirá qué números primos se pueden multiplicar para obtener el número que ha especificado:

p.ej 20 = 2 * 2 * 5

Entonces,

> factor 20

Obtienes 20: 2 2 5como salida

Si el número era primo, por ejemplo, 19, obtendrá un 19único.

margarita
fuente
Gracias, recibí esto de la página del manual. Tenía más curiosidad por qué querrías hacer esto en un script de shell, o similar. ¿Con qué frecuencia las personas realmente necesitan raíces principales? Actualicé la pregunta para que sea más clara.
Gavin Brock
2

Esta puede ser una utilidad descendiente de los primeros días de UNIX, antes de que las calculadoras científicas fueran baratas, pequeñas y abundantes.

Puede haber servido para permitir que los desarrolladores del UNIX original demuestren que todo esto podría hacer algo útil y que debería seguir recibiendo fondos.

LawrenceC
fuente
1
Sin embargo, no muestra ninguna de las características de Unix, ya que es puramente computacional.
Stéphane Chazelas
2
En los primeros días de Unix, la rofffuente se desarrolló para satisfacer los requisitos de financiación de Unix.
Kusalananda
0

Los números primos juegan un papel importante en la criptografía, aunque sé muy poco al respecto, podría entender que pueden resultarles útiles para identificar números primos grandes y similares.

Drake Clarris
fuente
55
factorestá limitado a números que se ajustan a un entero sin signo. En el mejor de los casos, son 64 bits (≤ 18,446,744,073,709,551,615), pero el número más pequeño que usaría razonablemente, por ejemplo, RSA es 2048 bits. IOW, eso es mucho más grande de lo que el factor puede manejar. De hecho, es mucho más grande, que escribir cuántas veces más grande excede la longitud máxima de un comentario . Tiene casi 600 dígitos de largo (es 2 you si quiere calcularlo usted mismo con, por ejemplo, bc)
derobert
Entonces, ¿no es útil hoy, pero quizás hace 35 años? ¿Estaba la criptografía usando claves con ese alto nivel de entropía? Solo pensé que podría ser una posible razón por la que existe.
Drake Clarris
No. Si el factor puede factorizar el número (sin trabar durante muchos, muchos años), entonces es inútil para la criptografía. Además, apuesto a que el factor utiliza un algoritmo relativamente lento ...
derobert
1
Te dije que sé muy poco sobre criptografía. jaja
Drake Clarris
3
@derobert al menos la versión en mi máquina (8.25) usa libgmp y puede factorizar números muy grandes: 184467440737095516150000000000001: 19 37 227601536870423 1152893543912729
Viktor Dahl el