Wir möchten ein Semiprime faktorisieren . Das Ziel dieser Herausforderung ist es, zwei kleine ganze Zahlen und v zu finden, so dass uvN mit der Methode von Fermat trivial faktorisiert werden kann, wodurch die Faktoren von N leicht abgeleitet werden können .u v u v N N
Die Aufgabe
Ausgehend von einem Halbwert und einer positiven ganzen Zahl definieren wir und als:
y=x2-kN
Schritt # 1 - Finden Sie
Sie müssen zuerst den kleinstmöglichen Wert von , sodass eine quadratische Zahl ist (auch als perfektes Quadrat bezeichnet).
Dies ermöglicht die Faktorisierung von mit einer einzigen Iteration der Fermat-Faktorisierungsmethode . Konkret führt dies sofort zu:
(Update: Diese Sequenz ist jetzt als A316780 veröffentlicht )
Schritt # 2 - Faktorisiere
Sie müssen dann die beiden positiven ganzen Zahlen und so finden, dass:v
c u = x + √
wobei und die Primfaktoren von .d N
Zusammenfassung
Ihre Aufgabe ist es, ein Programm oder eine Funktion zu schreiben, die als Eingabe verwendet und und in beliebiger Reihenfolge und in einem angemessenen Format ausgibt oder ausgibt .u v
Beispiel
Betrachten wir
Schritt 1
Der kleinstmögliche Wert von ist , was ergibt:40
y=28232-40×199.163=7.969.329-7,96652 Millionen=2809=532kN=(2823+53)×(2823-53)
Schritt 2
Die korrekte Faktorisierung von ist , weil:k = 4 × 10
k N = ( 719 × 4 ) × ( 277 × 10 ) N = 719 × 277
Die richtige Antwort wäre also entweder oder .[ 10 , 4 ]
Regeln
- Es ist nicht erforderlich, die beiden oben beschriebenen Schritte strikt anzuwenden. Es steht Ihnen frei, eine andere Methode zu verwenden, solange die korrekten Werte für und .v
- Sie müssen alle Werte von bis zur nativen Maximalgröße einer vorzeichenlosen Ganzzahl in Ihrer Sprache unterstützen.
- Der Eingang ist garantiert ein Halbbild.
- Das ist Code-Golf, also gewinnt die kürzeste Antwort in Bytes.
- Standardlücken sind verboten.
Testfälle
N | k | Output
-----------+------+------------
143 | 1 | [ 1, 1 ]
2519 | 19 | [ 1, 19 ]
199163 | 40 | [ 4, 10 ]
660713 | 1 | [ 1, 1 ]
4690243 | 45 | [ 9, 5 ]
11755703 | 80 | [ 40, 2 ]
35021027 | 287 | [ 7, 41 ]
75450611 | 429 | [ 143, 3 ]
806373439 | 176 | [ 8, 22 ]
1355814601 | 561 | [ 17, 33 ]
3626291857 | 77 | [ 7, 11 ]
6149223463 | 255 | [ 17, 15 ]
6330897721 | 3256 | [ 74, 44 ]
Beispielimplementierung
N
sicher, dass der Input tatsächlich ein Semiprime sein wird?