Wenn a = 15
und 152
als a2
dargestellt wird, während 215
als 2a
dargestellt wird, muss eine Zahl x gefunden werden, so dass
8x = 8*x8
Ich habe diesen naiven Python-Code ausprobiert
%Vor%Aber es dauert sehr lange, ein korrektes Ergebnis zu erzielen.
Wie kann ich den Code optimieren?
Ein bisschen Mathe hilft hier: Sei x eine natürliche Zahl mit n Ziffern. Dann 8x = 8 * 10 ^ n + x und x8 = 10 * x + 8. Also ist die zu lösende Gleichung 8 * 10 ^ n + x = 8 * (10 * x + 8) = 80 * x + 64 , wobei x und n natürliche Zahlen sein müssen. Es folgt sofort, dass x = (8 * 10 ^ n - 64) / 79. Jetzt müssen wir nur noch überprüfen, welche der Zahlen der Form 8 * 10 ^ n - 64 durch 79 teilbar ist, was sehr schnell ist:
%Vor%