In der Basis 10 enden alle perfekten Quadrate auf 0 , 1 , 4 , 5 , 6 oder 9 .
In Basis 16 enden alle perfekten Quadrate mit 0 , 1 , 4 oder 9 .
Nilknarf beschreibt in dieser Antwort, warum dies so ist und wie dies sehr gut funktioniert , aber ich werde hier auch eine kurze Beschreibung geben:
Beim Quadrieren einer Basis-10-Zahl, N , wird die Einerstelle nicht durch die Zehner- oder Hunderter-Stelle usw. beeinflusst. Nur die Einerstelle in N wirkt sich auf die Einerstelle in N 2 aus . Ein einfacher (aber möglicherweise nicht der erfolgreichste) Weg, alle möglichen letzten Stellen für N 2 zu finden, besteht darin, n 2 mod 10 für alle 0 <= n zu finden < 10 . Jedes Ergebnis ist eine mögliche letzte Ziffer. Für Base-m könnte man n 2 mod m für alle 0 <= n < m finden .
Schreiben Sie ein Programm, das bei Eingabe von N alle möglichen letzten Ziffern für ein perfektes Quadrat in Base-N ausgibt (ohne Duplikate). Sie können davon ausgehen , N größer ist 0 , und das N ist klein genug , dass N 2 nicht Überlauf (Wenn Sie den ganzen Weg bis testen N 2 , gebe ich Ihnen eine endliche Menge Pluspunkte, aber wissen , dass Der Wechselkurs von Brownie-Punkten zu echten Punkten ist unendlich zu eins.
Tests:
Input -> Output
1 -> 0
2 -> 0,1
10 -> 0,1,5,6,4,9
16 -> 0,1,4,9
31 -> 0,1,2,4,5,7,8,9,10,14,16,18,19,20,25,28
120 -> 0,1,4,9,16,24,25,36,40,49,60,64,76,81,84,96,100,105
Das ist Code-Golf , also gelten die Standardregeln!
(Wenn Ihnen dies zu leicht fällt oder Sie eine ausführlichere Frage zum Thema wünschen, sollten Sie sich diese Frage überlegen: Minimale Abdeckung der Basen für die quadratische Prüfung der Rechtwinkligkeit nach Restwerten ).