Вопрос

В 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.

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