Primteilern einer Zahl in ML
-
22-08-2019 - |
Frage
In ML Ich möchte die Primfaktoren einer Zahl erhalten. Wie kann ich dies tun, ich bin Anfänger.
Lösung
Mit der einfachen Probedivision, das beginnt mit p=2
und wiederholt teilt n
durch p
, Inkrementieren p
wie es geht.
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
Andere Tipps
Es gibt mehrere allgemeine Algorithmen für die Primfaktoren einer ganzen Zahl zu finden: siehe wikipedia . Test Division mit einem einfachen Primzahltest ist am einfachsten zu verstehen.
Suchen oder einen Algorithmus in Pseudo-Code entwickeln; nur dann Sorgen darüber, wie es in ML zu setzen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow