Ich denke, es ist am einfachsten, diese Herausforderung nacheinander zu erklären. Beginnen Sie mit einer Eingabenummer N und:
- Finden Sie den höchsten Primfaktor
- Überprüfen Sie die Zahlen über und unter N und prüfen Sie, ob der höchste Primfaktor höher ist (dh der höchste Primfaktor von N-1 und / oder N + 1 ist höher als der Faktor von N) .
- Überprüfen Sie weiterhin höhere und / oder niedrigere Zahlen neben N in den Richtungen, in denen die höchsten Faktoren zunehmen ( (N-2, N-3 ...) und / oder (N + 2, N + 3 ...) und so weiter auf)
- Sobald es in keiner Richtung Primfaktoren gibt, die höher sind als die, die wir bereits gefunden haben, stoppen wir und geben den höchsten Primfaktor aus, auf den wir gestoßen sind.
Schauen wir uns ein Beispiel an:
245hat die Primfaktoren 5, 7, 7. Seine Nachbarn sind:
244 -> 2, 2, 61
245 -> 5, 7, 7
246 -> 2, 3, 41
Der höchste Primfaktor steigt in beide Richtungen, also müssen wir uns den nächsten Nachbarn ansehen:
243 -> 3, 3, 3, 3, 3
244 -> 2, 2, 2, 61
245 -> 5, 7, 7
246 -> 2, 3, 41
247 -> 13, 19
Die höchsten Primfaktoren nehmen nun in beide Richtungen ab, so dass der höchste Primfaktor, den wir angetroffen haben, ist 61und daher zurückgegeben werden sollte.
Ein anderes Beispiel:
Schauen wir uns an 1024. Seine Hauptfaktoren sind 2, 2, 2, 2, 2, 2, 2, 2, 2, 2. Die Hauptfaktoren seiner nächsten Nachbarn sind:
1023 -> 3, 11, 31
1024 -> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
1025 -> 5, 5, 41
Die höchsten Primfaktoren nehmen in beide Richtungen zu, von 2bis 31oder 41. Schauen wir uns die Nachbarn an:
1022 -> 2, 7, 73
1023 -> 3, 11, 31
1024 -> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
1025 -> 5, 5, 41
1026 -> 2, 3, 3, 19
Der höchste Primfaktor für 1022ist 73und der höchste Primfaktor für 1026ist 19. Da 19ist niedriger als 41wir nicht daran interessiert sind. Bei Zahlen unter N nimmt die Zahl immer noch zu, daher überprüfen wir die nächste Zahl in dieser Richtung :
1021 -> 1021
1022 -> 2, 7, 73
1023 -> 3, 11, 31
1024 -> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
1025 -> 5, 5, 41
1026 -> 2, 3, 3, 19
1021 ist eine Primzahl und die höchste Primzahl, auf die wir gestoßen sind. Sie sollte daher zurückgegeben werden.
Regeln:
- Sie werden nur
Ngrößer1und kleiner als positiv2^31-2. - Eingabe- und Ausgabeformate sind optional, die Zahlen müssen sich jedoch in der Basis 10 befinden.
- Sie sollten weiter nach höheren Primzahlen suchen, solange der höchste Wert in diese Richtung steigt. Die Richtungen sind voneinander unabhängig.
Testfälle:
Format: N, highest_factor
2, 3
3, 3
6, 7
8, 11
24, 23
1000, 997
736709, 5417
8469038, 9431
N=2scheint tatsächlich ein Randfall zu sein, da 1es keine Primfaktoren gibt, also keinen maximalen Primfaktor, mit dem wir vergleichen können, um zu entscheiden, ob wir fortfahren sollen.
2für N. Wir bekommen dann5für N-1 und61für N + 1. Dann bekommen wir19für N-2 und67für N + 2. Sollten wir weiterhin versuchen, niedrigere Zahlen zu verwenden, seitdem19>5oder aufhören, seitdem5<61? Dh werden die Maxima pro Seite eingehalten? (Ich bin nicht sicher, ob das Beispiel mathematisch möglich ist.)