Question

ML je veux obtenir les diviseurs premiers d'un nombre. Comment puis-je faire cela, je suis débutant.

Était-ce utile?

La solution

Utilisation de la simple division d'essai, cela commence par p=2 et divise à plusieurs reprises n par p, incrémenter p comme il va.

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

Autres conseils

Il existe plusieurs algorithmes généraux pour trouver les diviseurs premiers d'un entier: voir wikipedia .

scroll top