Ми хотіли б факторізовать полупервічное . Мета цього завдання полягає в знаходженні два невеликих цілих чисел і такі , що UVN може бути розкладено тривіальним методом Ферма, що дозволяє легко відняти чинники N .
Завдання
З огляду на полупервічное і натуральне число , ми визначимо і , як:
Крок №1 - Знайдіть
Спочатку потрібно знайти найменше можливе значення таке, щоб - це квадратне число (він же ідеальний квадрат).
Це дозволяє розподілити за допомогою однієї ітерації методу факторизації Ферма . Більш конкретно, це негайно призводить до:
(Оновлення: ця послідовність тепер опублікована як A316780 )
Крок №2 - Розділити фактор
Тоді вам доведеться знайти два цілих натуральних числа і такі, що:
c u = x + √
де і є головними факторами .
Підсумок
Ваше завдання - написати програму або функцію, яка приймає як вхід, і друкує або виводить і у будь-якому порядку та будь-якому розумному форматі.
Приклад
Розглянемо
Крок 1
Найменше можливе значення дорівнює , що дає:
y=28232-40×199163=7969329-7966520=2809=532kN=(2823+53)×(2823-53)kN=2876×2770
Крок №2
Правильна факторизація дорівнює , оскільки:
Отже, правильною відповіддю буде або або .
Правила
- Не потрібно чітко застосовувати два описані вище кроки. Ви можете використовувати будь-який інший метод, якщо він знайде правильні значення і .
- Ви повинні підтримувати всі значення до нативного максимального розміру непідписаного цілого числа на вашій мові.
- Гарантований вхід є напівпринтер.
- Це код-гольф, тому найкоротша відповідь у байтах виграє.
- Стандартні лазівки заборонені.
Тестові справи
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 ]
Приклад реалізації
У фрагменті нижче функція - це нереалізована реалізація, яка приймає як вихідний і повертає і .
Для ілюстративних цілей фрагмент також включає функцію яка приймає , та як вхідні дані та обчислює коефіцієнти в .
N
буде насправді напівприміром?