Есть, конечно, хорошо известные алгоритмы для того, что вы хотите сделать, поэтому простой поиск в Google действительно решит это.
Однако я хотел бы показать вам простой процесс мышления, который может быть полезен в будущем.
Поскольку факторы должны появляться в порядке возрастания, вы могли бы:
- Начинайте с самой низкой штрихом (2).
- Проверьте, может ли этот номер быть разделен на него. Если он может, сделать это и вернуться к 1.
- Если нет, то замените 2 следующего премьер и вернуться к 2.
Теперь, очевидно, что самое большое простое число вы будете когда-либо проверка - это номер, с которого вы начали. Однако основное умножение аксиома гласит, что если число можно разделить на a
:
n/a = b
Тогда можно разделить на b
! Вы можете использовать этот факт для дальнейшего сужения диапазона проверки, но я оставлю его вам, чтобы определить (или google) верхнюю границу.
Фактическая реализация, конечно же, является частью вашей домашней работы, и поэтому предоставление кода здесь не будет разумной идеей. Тем не менее, я не думаю, что для вас будет сложно использовать такие вещи, как next_prime
.
Поймите это: http://www.haskell.org/haskellwiki/99_questions/Solutions/35 – Sibi
Немного веб-поиска найдет ссылку, которую вы предоставили сиби. Если у вас все еще есть проблемы с реализацией этого или понимание решения, тогда покажите нам, что вы пробовали, и мы сможем лучше помочь. – mhwombat
Для вопросов о программировании с простыми числами я скромно рекомендую [это эссе] (http://programmingpraxis.com/essays) в своем блоге, который включает в себя код Haskell для факторинговых целых чисел. – user448810