2009-05-18 5 views

Antwort

2

die einfache Probedivision verwenden, startet diese mit p=2 und teilt wiederholt 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 
1

Es gibt mehrere allgemeine Algorithmen zum Auffinden der Primzahlteiler einer ganzen Zahl: siehe wikipedia. Trial division mit einem einfachen Primalitätstest ist am einfachsten zu verstehen.

Suchen oder Entwickeln eines Algorithmus in Pseudocode; nur dann sorgen Sie sich darum, wie man es in ML steckt.