Простые делители числа в ML - PullRequest
0 голосов
/ 18 мая 2009

В ML я хочу получить простые делители числа. Как я могу это сделать, я новичок.

Ответы [ 2 ]

2 голосов
/ 27 июня 2009

Используя простое пробное деление, оно начинается с 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
1 голос
/ 18 мая 2009

Существует несколько общих алгоритмов для нахождения простых делителей целого числа: см. wikipedia . Пробное деление с простым тестом на простоту проще всего понять.

Найти или разработать алгоритм в псевдокоде; только потом беспокоиться о том, как положить его в ОД.

...