Простые делители числа в ML
-
22-08-2019 - |
Вопрос
В ML я хочу получить простые делители числа.Как я могу это сделать, я новичок.
Решение
Используя простое пробное разделение, это начинается с p=2
и многократно делит n
Автор: p
, увеличивающийся p
по ходу дела.
open LargeInt (* if you want to work with huge numbers like 5000000000 *)
infix 7 quot rem
val prime_factors =
let fun trial_division p n =
if p > n then nil else
if n rem p = 0
then p :: trial_division p (n quot p)
else trial_division (p + 1) n
in trial_division 2 end
Другие советы
Существует несколько общих алгоритмов для нахождения простых делителей целого числа:видишь википедия. Судебный отдел с помощью простого теста на примитивность проще всего разобраться.
Найти или разработать алгоритм в псевдокоде;только потом беспокойтесь о том, как поместить это в ML.
Не связан с StackOverflow