divisores primos de un número en ML
-
22-08-2019 - |
Pregunta
En ML quiero conseguir los divisores primos de un número. ¿Cómo puedo hacer esto, yo soy principiante.
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