Método 1:usando `seq`,` bc` y `grep` (más portátil)
Este método es altamente portátil porque se basa en utilidades UNIX estándar.
`` `Bash
#!/bin/bash
Obtenga entrada del usuario
Leer -P "Ingrese un número:" Num
Manejo de errores para entrada no positiva
if ((num <=0)); entonces
Echo "Por favor ingrese un entero positivo".
Salir 1
FI
Genere números de 1 a num
SEQ 1 $ NUM | mientras lea i; hacer
# Use BC para realizar la operación de módulos. Esto maneja grandes números.
if (($ (echo "$ num % $ i" | bc) ==0)); entonces
echo "$ i"
FI
hecho
`` `` ``
Este script primero solicita al usuario para un número. Luego usa `SEQ` para generar una secuencia de números de 1 al número de entrada. El `while` loop itera a través de cada número, y` BC` calcula el módulo. Si el módulo es 0, el número es un factor y se imprime.
Método 2:Uso de aritmética bash (menos portátil, ligeramente más rápido)
Este método aprovecha las capacidades aritméticas incorporadas de Bash, lo que lo hace un poco más rápido para números más pequeños, pero podría no ser tan portátil como el método `BC`.
`` `Bash
#!/bin/bash
Obtenga entrada del usuario
Leer -P "Ingrese un número:" Num
Manejo de errores para entrada no positiva
if ((num <=0)); entonces
Echo "Por favor ingrese un entero positivo".
Salir 1
FI
iterar a través de números de 1 a num
para ((i =1; i <=num; i ++)); hacer
# Compruebe si soy un factor usando el operador de módulo
if ((num % i ==0)); entonces
echo "$ i"
FI
hecho
`` `` ``
Este script es similar al primero, pero utiliza la expansión aritmética incorporada de Bash `((...))` para la operación de módulo, evitando la llamada externa a `BC`.
Cómo ejecutar:
1. Guarde cualquier script en un archivo (por ejemplo, `find_factors.sh`).
2. Haga que el script sea ejecutable:`chmod +x find_factors.sh`
3. Ejecute el script:`./Find_factors.sh`
Salida de ejemplo (para entrada 12):
`` `` ``
1
2
3
4
6
12
`` `` ``
Recuerde elegir el método que mejor se adapte a sus necesidades y a los sistemas en los que lo ejecutará. El primer método (usando `BC`) generalmente se recomienda para su compatibilidad más amplia. El segundo es más rápido para números más pequeños en sistemas donde se optimiza la aritmética de Bash.