Алгоритм поиска наибольшего простого множителя числа

На самом деле есть несколько algorithm более эффективных способов prime-factoring найти множители больших чисел mathematics (для меньших достаточно хорошо prime-factoring работает пробное деление).

Один algorithm метод, который очень быстр, если algorithms во входном числе два множителя algorithm-design очень близки к его квадратному prime-factoring корню, известен как Fermat factorisation. Он mathematics использует тождество N = (a algorithm-design + b) (a - b) = a ^ 2 - b mathematics ^ 2, и его легко понять и prime-factoring реализовать. К сожалению, в mathematics целом это не очень быстро.

Самый algorithm известный метод разложения algorithms чисел длиной до 100 цифр arithmetic - это Quadratic sieve. В качестве бонуса mathematics часть алгоритма легко выполняется maths с помощью параллельной обработки.

Еще algorithms один алгоритм, о котором math я слышал, - это Pollard's Rho algorithm. Это не mathematical так эффективно, как квадратное algorithms сито в целом, но кажется, что mathematics его проще реализовать.


После mathematics того, как вы решили, как algorithm разделить число на два фактора, вот mathematical самый быстрый алгоритм, который mathematical я могу придумать, чтобы найти mathematics наибольший простой множитель algorithm числа:

Создайте приоритетную mathematics очередь, в которой изначально algorithms хранится сам номер. На каждой mathematics итерации вы удаляете наибольшее algorithms число из очереди и пытаетесь arithmetic разделить его на два фактора mathematics (конечно, не позволяя 1 быть mathematical одним из этих факторов). Если mathematical этот шаг не удается, число prime-factoring простое, и вы знаете свой math ответ! В противном случае mathematical вы добавляете два фактора arithmetic в очередь и повторяете.

algorithm

math

prime-factoring

2022-10-30T15:30:07+00:00