Chcielibyśmy czynniki pierwsze Liczba Półpierwsza . Celem wyzwania jest znajdują się dwa małe liczby całkowite u i v , tak że u v N można trywialny factorized metodą Fermata, co pozwala na łatwe odliczać czynniki N .
Zadanie
Biorąc pod uwagę Liczba Półpierwsza i dodatnią liczbą całkowitą k określamy X i Y jako:
y=x2-kN
Krok # 1 - Znajdź
Najpierw musisz znaleźć najmniejszą możliwą wartość tak że y jest liczbą kwadratową ( czyli kwadrat idealny).
Pozwala to na czynniki z pojedynczej iteracji Algorytm Fermata . Mówiąc konkretniej, prowadzi to natychmiast do:
(Aktualizacja: ta sekwencja jest teraz opublikowana jako A316780 )
Krok # 2 - Faktoryzuj
Następnie musisz znaleźć dwie dodatnie liczby całkowite i v takie, że:
c u = x + √
gdzie i d są głównymi czynnikami N .
streszczenie
Twoim zadaniem jest napisanie programu lub funkcji, która przyjmuje jako dane wejściowe i drukuje lub wyjściowe u i v w dowolnej kolejności i dowolnym rozsądnym formacie.
Przykład
Rozważmy
Krok 1
Najmniejsza możliwa wartość wynosi 40 , co daje:
r=2.8232-40x199163=7969329-7966520=2809=532KN=(2823+53)x(2823-53)kN=2876x2770
Krok 2
Prawidłowa faktoryzacja wynosi k = 4 × 10 , ponieważ:
Zasady
- Dane wejściowe są gwarantowane jako półpierwsze.
- To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w bajtach.
- Standardowe luki są zabronione.
Przypadki testowe
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 ]
Przykładowa implementacja
N
będą w rzeczywistości półpierwszymi?