Prime diviseurs d'un nombre en ML
-
22-08-2019 - |
Question
ML je veux obtenir les diviseurs premiers d'un nombre. Comment puis-je faire cela, je suis débutant.
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 .
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow