Λειτουργικά συστήματα

Γνώση Υπολογιστών >> Λειτουργικά συστήματα >  >> Unix

Πώς γράφετε ένα πλήρες πρόγραμμα για να βρείτε παράγοντες δεδομένου αριθμού στον προγραμματισμό του Unix Shell;

Υπάρχουν αρκετές προσεγγίσεις για την εξεύρεση παραγόντων σε ένα σενάριο κελύφους UNIX. Εδώ είναι δύο, ένας χρησιμοποιώντας `seq` και` bc` (πιο φορητό) και μια άλλη αξιοποίηση των αριθμητικών δυνατοτήτων του bash (ελαφρώς ταχύτερη αλλά λιγότερο φορητή):

Μέθοδος 1:Χρήση `seq`,` bc` και `grep` (πιο φορητό)

Αυτή η μέθοδος είναι εξαιρετικά φορητή επειδή βασίζεται σε τυπικά βοηθητικά προγράμματα UNIX.

`` `bash

#!/bin/bash

Λάβετε είσοδο από το χρήστη

Διαβάστε -p "Εισαγάγετε έναν αριθμό:" NUM

Χειρισμός σφαλμάτων για μη θετική είσοδο

αν ((num <=0)); τότε

Echo "Παρακαλώ εισάγετε έναν θετικό ακέραιο."

έξοδος 1

fi

Δημιουργήστε αριθμούς από 1 έως NUM

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

Επεξεργαστείτε μέσω αριθμών από 1 έως NUM

για ((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 είναι βελτιστοποιημένη.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα