Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> Python Προγραμματισμός

Πώς να γράψετε ένα πρόγραμμα σε Python για Diophantine Εξισώσεις

Diophantine εξισώσεις έχουν μαγευτεί μαθηματικοί από το Διόφαντου της Αλεξάνδρειας πρώτη πρότεινε να αντιμετωπίσει μια εξίσωση της μορφής ax + bx = c . Σε αυτή τη μορφή , η εξίσωση είναι γνωστή ως μια γραμμική εξίσωση Διοφαντική . Αυτή η εξίσωση έχει μόνο μια λύση, όταν c είναι ο μέγιστος κοινός διαιρέτης των a και b , ή όταν c είναι ένα πολλαπλάσιο του μέγιστου κοινού διαιρέτη των a και b . Διαφορετικά , δεν υπάρχουν λύσεις για αυτή την εξίσωση . Αναπτύχθηκε από τον καθηγητή Jim Carlson του Πανεπιστημίου του Illinois at Urbana /Champagne , το σύντομο πρόγραμμα που ακολουθεί δείχνει τη δύναμη της Python για μαθηματικές εργασίες . Τα πράγματα που θα χρειαστείτε
Python 2.6 ή νεότερη
Η Εμφάνιση Περισσότερες οδηγίες
Η

1 Ανοίξτε ένα τερματικό συνεδρία και να επικαλούνται το διερμηνευτή της Python με την ακόλουθη εντολή :

My- iMac : ~ με $ python - κατά

Αυτό θα επιστρέψει μια μακρά λίστα με όλα τα modules που διαθέτει Python στην εγκατάσταση σας και στο τέλος θα σας πω ποια είναι εγκατεστημένη έκδοση της Python στον υπολογιστή σας . 2

Δημιουργήστε ένα νέο ορισμό της συνάρτησης Python εισάγοντας τον ακόλουθο κώδικα στη γραμμή Python . Μετά καθηγητής Carlson , εμείς θα το ονομάζουμε " ​​isolve " :

>>> def isolve ( α, β , γ) :

Η άνω και κάτω τελεία θα πει στην Python να μην ερμηνεύσει αμέσως όταν πατήσετε το πλήκτρο επιστροφής, ώστε να έχετε περισσότερο χώρο για το πρόγραμμά σας .
εικόνων 3

Δημιουργία δύο μεταβλητές , q και r , που θα θέσει υποψηφιότητα για το πηλίκο και το υπόλοιπο η εξίσωση των μεταβλητών a και b , και στη συνέχεια να επικαλεστεί την Python divmod λειτουργία, η οποία θα βρει και χωρίζουν δύο αριθμούς και εμφανίζει διαιρέτης και οι υπόλοιποι τους , αν υπάρχουν . Ο κώδικας θα πρέπει να μοιάζει κάπως έτσι :

... q , r = divmod ( a, b ​​)
Η 4

Δημιουργήστε μια εντολή if που θα γρήγορα εξόδου μια λύση στην εξίσωση , όταν τους δεν είναι υπόλοιπο . Πληκτρολογήστε το ακόλουθο :

... αν r == 0 :

... επιστροφή ( [ 0 , c /b] )
5

Δημιουργήστε μια δήλωση else και για την περίπτωση όπου υπάρχει ένα υπόλοιπο :

... άλλο:

... sol = isolve ( β , γ, γ)

... u = sol [ 0 ] Ξενοδοχεία

... v = sol [ 1 ] Ξενοδοχεία

... επιστροφή ( [ v , u - q * v ] )

Αυτό θα θέσει b και r στο φορέα divmod , επιστρέφουν τιμές τους ως μεταβλητές u και v και στη συνέχεια να επιστρέψει ως η λύση του [ v , και το προϊόν του q και ν αφαιρείται από u] . Ο πλήρης κώδικας για το πρόγραμμα εξής:

>>> def isolve ( α, β , γ) :

... q , r = divmod ( a, b ​​)

... αν r == 0 :

... επιστροφή ( [ 0 , c /b] )

... άλλο:

... sol = isolve ( β , γ, γ)

... u = sol [ 0 ] Ξενοδοχεία

... v = sol [ 1 ] Ξενοδοχεία

... επιστροφή ( [ v , u - q * v ] )

Δώστε ιδιαίτερη προσοχή στην εσοχή μετά τις αν και ο άλλος καταστάσεις. Python δεν θα εκτελέσει αυτόν τον κώδικα χωρίς την κατάλληλη εσοχή .
Η

6 Πατήστε το πλήκτρο επιστροφής για μια ακόμη φορά να φέρει πίσω την άμεση Python . Εισάγετε τη λειτουργία isolve και τρεις τιμές για το z , y και c και πατήστε το κουμπί " Επιστροφή ". Θα πρέπει να δείτε αυτό :

>>> isolve ( 5 , 17 , 103 )

[ 721, -206 ]

Η

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

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