Algorithmus zum hinzufügen von zwei Ziffern am Ende einer Zahl zu berechnen, die ein bestimmtes Modul?
Also sagen wir ich habe eine Nummer 123456. 123456 % 97 = 72. Wie kann ich feststellen, welche zwei Ziffern Hinzugefügt werden müssen, um das Ende von 123456, so dass die neue Zahl % 97 = 1? Hinweis: - es müssen immer zwei Ziffern.
Beispielsweise, 12345676 % 97 = 1. In diesem Fall, muss ich hinzufügen die Ziffern "76" am Ende der Zahl.
(Dies ist für die IBAN-Berechnung.)
InformationsquelleAutor Jim | 2008-11-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du calc den modulo von 12345600 97 und add (97 - , + 1).
So bekommen Sie, was RoBorg erklärt whay cleaner oben 🙂
InformationsquelleAutor Johannes Schaub - litb
Edit: die 100 an der falschen Stelle
Ich bekomme newX = 123532. Wenn Sie die Lösung richtig ist, ich bin mir nicht sicher, ob ich es verstehe.
Und die Klammer ')' auf unsymmetrisch - drei schließen, zwei Türen. Gibt es eine tern fehlt?
Ich denke, ich bekomme es--zwei Ziffern = newX - x. Ich glaube, man muss hinzufügen, dass auf Ihre Antwort.
Typisch... hat er alle raus, dann schrieb es falsch hin
InformationsquelleAutor Greg
Dies ist die Gleichung, die Sie benötigen,
wo:
- 1
und all die anderen Antworten haben+ 1
? Fehlen Ihnen einige Klammern?InformationsquelleAutor Pablo Retyk
Sagen wir, wir erhalten die Nummer mit 12 stellen.
Schritt 1:
Schreiben Sie eine zufällige Zahl aus 10 Ziffern, d.h. 2 Ziffern weniger als benötigt, z.B. 1234567890 – das ist X
Schritt 2:
X * 100 = 123456789000.
'123456789000' - Y
Schritt 3:
Y /97 = '1272750402.061856'.
'06' – Z
Schritt 4:
97 – Z + 1 = 92.
'92' – W
Schritt 5:
Eine endgültige Einigung Zahl ist X, gefolgt von W, d.h. '123456789092'
Beispiele von angenommenen zahlen:
100000000093
100000000190
100000000287
Etc.
InformationsquelleAutor Ludmila
Modulo-Arithmetik ist nicht sehr Verschieden von regelmäßigen Arithmetik. Der Schlüssel zur Lösung der Art von problem, das Sie haben, ist zu erkennen, dass das, was Sie normalerweise tun würde, um dieses problem zu lösen ist noch gültig sind (in dem, was folgt, jede Erwähnung der Zahl bedeutet ganze Zahl):
Sagen, Sie haben
15 + x = 20
Die Art und Weise, Sie lösen es, indem wir erkennen, dass die inverse von 15 unter regelmäßiger Zugabe -15, dann können Sie schreiben (Ausnutzung von commutativity und Assoziativität wie wir es natürlich tun)
15 + x + (-15) = (15 + (-15)) + x = 0 + x = x = 20 + (-15) = 5
so, dass Ihre Antwort ist x = 5
Nun zu deinem problem.
Sagen, dass N und M sind bekannt, und Sie sind auf der Suche für x unter addition modulo k:
( N + x ) mod k = M
Zunächst zu erkennen, dass
( N + x ) mod k = ( ( N mod k ) + ( x mod k) mod k
und für das problem sinnvoll
M mod k = M
und
x mod k = x
so, dass, indem
N mod k = N_k
und
( a + b ) mod k = a +_k b
haben Sie
N_k +_k x = M
was bedeutet, dass das, was Sie brauchen, ist die inverse von N_k unter +_k. Das ist eigentlich ziemlich einfach, da die inverse unter +_k ist, was erfüllt diese Gleichung:
N_k +_k ("-N_k") = 0
ist eigentlich ziemlich einfach, weil für die eine Zahl y, so dass 0 <= y < k
(y + (k - y)) mod k = k mod k = 0
so, dass
"-N_k" = (k-N_k)
dann
N_k +_k x +_k "-N_k" = N_k +_k "-N_k" +_k x = 0 +_k x = x = M +_k "-N_k" = M +_k ( k - N_k )
so, dass die Lösung
( N + x ) mod k = M
ist
x = ( M + ( k - ( N mod k ) ) ) mod k
und für Ihr problem insbesondere
( 12345600 + x ) % 97 = 1
wird gelöst durch
x = ( 1 + ( 97 - ( 12345600 mod 97 ) ) ) mod 97 = 76
Bemerken, dass die Anforderung, dass Sie die Lösung haben immer zwei Ziffern aufgebaut ist, solange k < 100
InformationsquelleAutor broc