Genius implements modular arithmetic.
To use it you just add "mod <integer>" after
the expression. Example:
2^(5!) * 3^(6!) mod 5
It could be possible to do modular arithmetic by computing with integers and then modding in the end with
the %
operator, which simply gives the remainder, but
that may be time consuming if not impossible when working with larger numbers.
For example, 10^(10^10) % 6
will simply not work (the exponent
will be too large), while
10^(10^10) mod 6
is instantaneous. The first expression first tries to compute the integer
10^(10^10)
and then find remainder after division by 6, while the second expression evaluates
everything modulo 6 to begin with.
Μπορείτε να υπολογίσετε τους αντίστροφους των αριθμών mod μερικών ακέραιων χρησιμοποιώντας απλά ρητούς αριθμούς (φυσικά ο αντίστροφος πρέπει να υπάρχει). Παραδείγματα:
10^-1 mod 101 1/10 mod 101
Μπορείτε επίσης να κάνετε υπολογισμό υπολοίπων με πίνακες που συμπεριλαμβάνουν λήψη αντίστροφων, δυνάμεων και διαίρεση. Παράδειγμα:
A = [1,2;3,4] B = A^-1 mod 5 A*B mod 5
Αυτό πρέπει να δίνει τον μοναδιαίο πίνακα ως Β που θα είναι ο αντίστροφος του Α mod 5.
Μερικές συναρτήσεις όπως sqrt
ή log
δουλεύουν διαφορετικά όταν είναι κατάσταση σε modulo. Αυτές τότε δουλεύουν όπως οι διακριτές εκδόσεις που δουλεύουν μέσα στον δακτύλιο των ακεραίων που επιλέξατε. Για παράδειγμα: η
genius> sqrt(4) mod 7 = [2, 5] genius> 2*2 mod 7 = 4
sqrt
θα επιστρέψει στην πραγματικότητα όλες τις πιθανές τετραγωνικές ρίζες.
Μην συνδέετε τελεστές mod, απλά τοποθετήστε τους στο τέλος του υπολογισμού, όλοι οι υπολογισμοί στην παράσταση στα αριστερά θα εκτελεστούν σε αριθμητική mod. Αν βάλετε μια mod μέσα σε μια mod, θα πάρετε απροσδόκητα αποτελέσματα. Αν θέλετε απλά να πάρετε υπόλοιπο ενός απλού αριθμού και να ελέγξετε ακριβώς πότε παίρνονται υπόλοιπα, καλύτερα να χρησιμοποιήσετε τον τελεστή %
. Όταν χρειάζεται να συνδέσετε αρκετές παραστάσεις σε αριθμητική υπολοίπων με διαφορετικούς διαιρέτες, μπορεί να είναι καλύτερο να χωρίσετε απλά την παράσταση σε αρκετές και να χρησιμοποιήσετε προσωρινές μεταβλητές για να αποφύγετε ένα mod μέσα σε ένα mod.