Pregunta

En ML quiero conseguir los divisores primos de un número. ¿Cómo puedo hacer esto, yo soy principiante.

¿Fue útil?

Solución

Uso de la división simple ensayo, esto comienza con p=2 y se divide repetidamente n por p, incrementando p que 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

Otros consejos

Existen varios algoritmos generales para hallar los divisores primos de un entero: véase Wikipedia . división de prueba con un simple test de primalidad es más sencillo de entender.

Buscar o diseñar un algoritmo en pseudocódigo; sólo entonces preocuparse por la forma de ponerla en ML.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top