Как найти все простые факторы в долгосрочном целом в беззнакоменном состоянии?

StackOverflow https://stackoverflow.com/questions/4244319

  •  27-09-2019
  •  | 
  •  

Вопрос

У меня есть задание, чтобы найти все основные факторы номера ...

Мне нужно написать функцию, которая принимает номер и говорит мне все главные факторы числа. Например:

  • n = 350 главные факторы: 2 5 5 7

(Я передаю функцию номер в диапазоне от 0 до 18446744073709551615 - максимальное число является наибольшим количеством, которое подходит в 64-битное длительное длительное целое число без знака.)

Нет правильного решения

Другие советы

Это сложная проблема, и одна из главных причин всех исследований в квантовых компьютерах. Взгляни на Алгоритм Шора. Отказ Простая грубая сила без оптимизаций потребуется что-то вроде 1000 лет, хотя в этом конкретном случае (64-битные целые числа) вы должны уметь уменьшить ваше время выполнения всего за несколько минут.

Предполагая, что у вас есть тривиальный случай (не более) одним крупным фактором, вы можете значительно ускорить, сделав что-то вроде подсчета от 2 и попробовать каждое число (несколько раз, если он работает; 12 будет 2, 2 и 3 для пример). После того, как вы найдете фактор, уменьшите свой целевой номер тем фактором и проверьте, если новая цель является Prime.

Чтобы ускорить его дальше, вы можете сделать обработку по нескольким потокам, с каждым ответом диапазона делителей. Вы можете запустить тестеры PROMATIONATION на одном или нескольких потоках, предоставляя простые простыни в тестируемую нить, чтобы вы пытались разделить простые числа.

Вы могли бы даже искать с вершины диапазона вниз, если вы думаете, что человек, обеспечивающий ценность, пытается быть хитрым, хотя с плотностью простых чисел настолько выше на низком конце, это, вероятно, не поможет.

Главное, чтобы помнить, однако, что самый большой возможный фактор X, кроме того для того для того, является квадратным корнем X. Каждый раз, когда вы найдете фактор, самый большой возможный оставшийся фактор значительно уменьшается.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top