Der Hintergrund
Die Leute sprachen im Chat über die Hauptfaktorisierung und wir sprachen über Repunits. Repunits sind eine Untermenge der als repdigits bezeichneten Zahlen, bei denen es sich um Zahlen handelt, die nur aus sich wiederholenden Ziffern wie 222
oder bestehen 4444444444444444
, aber nur aus Repunits 1
.
Die ersten paar Repunit - Zahlen sind daher 1
, 11
, 111
usw. Diese sind bezeichnet durch R n , so R 1 = 1
, R 2 = 11
usw. und werden durch die Formel erzeugt wird R(n) = (10^n - 1)/9
, mit n > 0
.
Die Primfaktorisierung dieser Repunit-Nummern folgt der Sequenz A102380 im OEIS. Beispielsweise:
R 1 = 1
R 2 = 11
R 3 = 111 = 3 · 37
R 4 = 1111 = 11 · 101
R 5 = 11111 = 41 · 271
R 6 = 111111 = 3 · 7 · 11 · 13 · 37
R 7 = 1111111 = 239 * 4649
...
Die Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die, wenn sie eine Eingabe-Ganzzahl n mit n >= 2
über STDIN oder ein Äquivalent erhalten , die neuen Primfaktoren für R n in einem beliebigen geeigneten Format ausgibt oder zurückgibt . "Neue Primfaktoren" bedeutet hier alles, x
wo x
ein Primfaktor von R n ist , aber x
kein Primfaktor für irgendein vorheriges R k ist , mit 1 <= k < n
(dh, wenn wir die Primfaktoren für alle R nacheinander schreiben , haben wir nicht gesehen x
Vor).
Die Beispiele
Input: 6
Output: 7, 13
(because 3, 11, and 37 are factors of a smaller R_k)
Input: 19
Output: 1111111111111111111
(because R_19 is prime, so no other factors)
Input: 24
Output: 99990001
(because 3, 7, 11, 13, 37, 73, 101, 137, 9901 are factors of a smaller R_k)
Input: 29
Output: 3191, 16763, 43037, 62003, 77843839397
(because no factors of R_29 are also factors of a smaller R_k)
Die Extras:
- Ihr Code kann alles oder nichts, wenn
n < 2
. - Sie können
n
für Test- und Ausführungszwecke von einer "angemessenen" Obergrenze ausgehen. Es wird beispielsweise nicht erwartet , dass Ihr Code ausgegebenn = 10000000
wird, aber Ihr Algorithmus sollte in einem solchen Fall funktionieren, wenn unbegrenzte Rechenleistung und Zeit zur Verfügung stehen. - Hier finden Sie eine Website, die sich mit der Aufteilung von Repunits befasst.
- Ich habe die Mathematik nicht durchgearbeitet, aber ich schlage eine Hypothese vor, dass jedes n ein bestimmtes Ergebnis für diesen Algorithmus hat - das heißt, kein n existiert so, dass R n keine neuen Faktoren hat.
Ich biete ein Kopfgeld von 250 Punkten an, wenn jemand dies in seiner Antwort beweist oder widerlegt.Thomas Kwa schlug einen eleganten Beweis vor , und ich verlieh das Kopfgeld.