Frage

In ML Ich möchte die Primfaktoren einer Zahl erhalten. Wie kann ich dies tun, ich bin Anfänger.

War es hilfreich?

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
scroll top