Παράδειγμα για να ελέγξετε εάν ένας ακέραιος αριθμός (που έχει εισαχθεί από τον χρήστη) είναι ένας πρωταρχικός αριθμός ή όχι για βρόχο και αν… αλλιώς δήλωση.
Για να κατανοήσετε αυτό το παράδειγμα, θα πρέπει να γνωρίζετε τις ακόλουθες θεματολογίες προγραμματισμού C ++:
- C ++ εάν, εάν… αλλιώς και Ένθετο εάν… αλλιώς
- C ++ για βρόχο
- C ++ διακοπή και συνέχεια της δήλωσης
Ένας θετικός ακέραιος που διαιρείται μόνο με το 1 και ο ίδιος είναι γνωστός ως πρωταρχικός αριθμός.
Για παράδειγμα: το 13 είναι ένας πρωταρχικός αριθμός επειδή διαιρείται μόνο με τα 1 και 13 αλλά, το 15 δεν είναι πρωταρχικός αριθμός επειδή μπορεί να διαιρεθεί από τα 1, 3, 5 και 15.
Σημείωση: 0 και 1 δεν είναι πρωταρχικοί αριθμοί.
Παράδειγμα: Ελέγξτε τον πρωταρχικό αριθμό
#include using namespace std; int main() ( int i, n; bool isPrime = true; cout <> n; // 0 and 1 are not prime numbers if (n == 0 || n == 1) ( isPrime = false; ) else ( for (i = 2; i <= n / 2; ++i) ( if (n % i == 0) ( isPrime = false; break; ) ) ) if (isPrime) cout << n << " is a prime number"; else cout << n << " is not a prime number"; return 0; )
Παραγωγή
Εισαγάγετε έναν θετικό ακέραιο: 29 29 είναι ένας πρώτος αριθμός.
Αυτό το πρόγραμμα παίρνει έναν θετικό ακέραιο από τον χρήστη και το αποθηκεύει στη μεταβλητή n.
Παρατηρήστε ότι η boolean μεταβλητή isPrime αρχικοποιείται true
στην αρχή του προγράμματος.
Δεδομένου ότι τα 0 και 1 δεν είναι πρωταρχικοί αριθμοί, ελέγχουμε πρώτα εάν ο αριθμός εισαγωγής είναι ένας από αυτούς τους αριθμούς ή όχι. Εάν ο αριθμός εισαγωγής είναι 0 ή 1 , τότε η τιμή του isPrime ορίζεται σε false
.
Διαφορετικά, η αρχική τιμή του isPrime παραμένει αμετάβλητη και for
εκτελείται ο βρόχος, ο οποίος ελέγχει εάν ο αριθμός που έχει εισαχθεί από τον χρήστη διαιρείται τέλεια από το i ή όχι.
for (i = 2; i <= n / 2; ++i) ( if (n % i == 0) ( isPrime = false; break; ) )
Η for
βρόχος διαρκεί από i == 2
έως i <= n / 2
και αυξάνει την αξία του i κατά 1 με κάθε επανάληψη.
Ο βρόχος τελειώνει στο i == n / 2
γιατί δεν μπορούμε να βρούμε κανένα παράγοντα για το n πέρα από τον αριθμό n / 2
. Άρα, τυχόν επαναλήψεις πέρα από αυτό n / 2
είναι περιττές.
Εάν ο αριθμός που έχει εισαχθεί από τον χρήστη διαιρείται τέλεια από το i, τότε το isPrime έχει οριστεί false
και ο αριθμός δεν θα είναι πρωταρχικός αριθμός.
Αλλά αν ο αριθμός εισαγωγής δεν είναι τέλεια διαιρούμενος από το i σε ολόκληρο τον βρόχο, τότε σημαίνει ότι ο αριθμός εισαγωγής διαιρείται μόνο από το 1 και τον ίδιο τον αριθμό.
Έτσι, ο δεδομένος αριθμός είναι ένας πρωταρχικός αριθμός.
Στην περίπτωση του n == 2
, ο for
βρόχος αποτυγχάνει να εκτελεστεί και η τιμή του isPrime παραμένει true
.