Metodo 1:usando `seq`,` bc` e `grep` (più portatile)
Questo metodo è altamente portatile perché si basa su utility UNIX standard.
`` `Bash
#!/bin/bash
Leggi -p "Immettere un numero:" Num
if ((num <=0)); Poi
Echo "Inserisci un numero intero positivo."
Uscita 1
fi
Seq 1 $ num | mentre leggi i; Fare
# Utilizzare BC per eseguire il funzionamento del modulo. Questo gestisce grandi numeri.
if (($ (echo "$ num % $ i" | bc) ==0)); Poi
echo "$ i"
fi
Fatto
`` `
Questo script richiede prima l'utente per un numero. Quindi usa `seq` per generare una sequenza di numeri da 1 al numero di input. Il ciclo `while` itera attraverso ogni numero e` bc` calcola il modulo. Se il modulo è 0, il numero è un fattore ed è stampato.
Metodo 2:utilizzando aritmetica bash (meno portatile, leggermente più veloce)
Questo metodo sfrutta le capacità aritmetiche integrate di Bash, rendendolo leggermente più veloce per numeri più piccoli, ma potrebbe non essere portatile come il metodo `BC`.
`` `Bash
#!/bin/bash
Leggi -p "Immettere un numero:" Num
if ((num <=0)); Poi
Echo "Inserisci un numero intero positivo."
Uscita 1
fi
per ((i =1; i <=num; i ++)); Fare
# Controlla se sono un fattore usando il modulo operatore
if ((num % i ==0)); Poi
echo "$ i"
fi
Fatto
`` `
Questo script è simile al primo, ma utilizza l'espansione aritmetica integrata di Bash `((...))` per l'operazione modulo, evitando la chiamata esterna a `BC`.
Come eseguire:
1. Salva entrambi gli script in un file (ad es. `Find_factors.sh`).
2. Rendi eseguibile lo script:`chmod +x find_factors.sh`
3. Esegui lo script:`./Find_factors.sh`
Esempio di output (per input 12):
`` `
1
2
3
4
6
12
`` `
Ricorda di scegliere il metodo che si adatta meglio alle tue esigenze e ai sistemi su cui lo eseguirai. Il primo metodo (usando `bc`) è generalmente raccomandato per la sua più ampia compatibilità. Il secondo è più veloce per numeri più piccoli sui sistemi in cui l'aritmetica di Bash è ottimizzata.
sistemi © www.354353.com