Μέθοδος 1:Χρήση `seq`,` bc` και `grep` (πιο φορητό)
Αυτή η μέθοδος είναι εξαιρετικά φορητή επειδή βασίζεται σε τυπικά βοηθητικά προγράμματα UNIX.
`` `bash
#!/bin/bash
Διαβάστε -p "Εισαγάγετε έναν αριθμό:" NUM
αν ((num <=0)); τότε
Echo "Παρακαλώ εισάγετε έναν θετικό ακέραιο."
έξοδος 1
fi
SEQ 1 $ num | Ενώ διαβάζομαι κάνω
# Χρησιμοποιήστε το BC για να εκτελέσετε τη λειτουργία Modulo. Αυτό χειρίζεται μεγάλους αριθμούς.
αν (($ (echo "$ num % $ i" | bc) ==0)); τότε
echo "$ i"
fi
γινώμενος
`` `
Αυτό το σενάριο προτρέπει πρώτα τον χρήστη για έναν αριθμό. Στη συνέχεια χρησιμοποιεί `seq` για να δημιουργήσει μια ακολουθία αριθμών από 1 στον αριθμό εισόδου. Ο βρόχος "ενώ ο βρόχος επαναλαμβάνεται σε κάθε αριθμό και το" BC` υπολογίζει το modulo. Εάν το modulo είναι 0, ο αριθμός είναι ένας παράγοντας και εκτυπώνεται.
Μέθοδος 2:Χρήση αριθμητικής bash (λιγότερο φορητή, ελαφρώς ταχύτερη)
Αυτή η μέθοδος αξιοποιεί τις ενσωματωμένες αριθμητικές δυνατότητες του Bash, καθιστώντας την ελαφρώς ταχύτερη για μικρότερους αριθμούς, αλλά μπορεί να μην είναι τόσο φορητή όσο η μέθοδος `BC`.
`` `bash
#!/bin/bash
Διαβάστε -p "Εισαγάγετε έναν αριθμό:" NUM
αν ((num <=0)); τότε
Echo "Παρακαλώ εισάγετε έναν θετικό ακέραιο."
έξοδος 1
fi
για ((i =1, i <=num, i ++)); κάνω
# Ελέγξτε αν είμαι παράγοντας που χρησιμοποιεί τον χειριστή Modulo
αν ((num % i ==0)); τότε
echo "$ i"
fi
γινώμενος
`` `
Αυτό το σενάριο είναι παρόμοιο με το πρώτο, αλλά χρησιμοποιεί την ενσωματωμένη αριθμητική επέκταση του Bash `((...)) για τη λειτουργία Modulo, αποφεύγοντας την εξωτερική κλήση στο` BC`.
Πώς να εκτελέσετε:
1. Αποθήκευση είτε σεναρίου σε ένα αρχείο (π.χ., `find_factors.sh`).
2. Κάντε το σενάριο εκτελέσιμο:`chmod +x find_factors.sh '
3. Εκτελέστε το σενάριο:`./Find_factors.sh '
Παράδειγμα εξόδου (για είσοδο 12):
`` `
1
2
3
4
6
12
`` `
Θυμηθείτε να επιλέξετε τη μέθοδο που ταιριάζει καλύτερα στις ανάγκες σας και τα συστήματα που θα τα εκτελείτε. Η πρώτη μέθοδος (χρησιμοποιώντας το `BC`) συνιστάται γενικά για την ευρύτερη συμβατότητα της. Το δεύτερο είναι ταχύτερο για μικρότερους αριθμούς σε συστήματα όπου η αριθμητική Bash είναι βελτιστοποιημένη.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα