import System.CPUTime
import Text.Printf
-- MCD recursivo
mcd a 0 = a
mcd a b
= mcd b
(a `
mod` b
)
main = do
let a = 999999
b = 1000000
inicio <- getCPUTime
let resultado = mcd a b
resultado `
seq`
return () -- Forzar evaluación estricta fin <- getCPUTime
let tiempoNs
= fromIntegral (fin
- inicio
) / 1e3
-- Convertir de picosegundos a nanosegundos printf "MCD de %d y %d es: %d\n" a b resultado
printf
"Tiempo de ejecución: %.0f nanosegundos\n" (tiempoNs
:: Double)
aW1wb3J0IFN5c3RlbS5DUFVUaW1lCmltcG9ydCBUZXh0LlByaW50ZgoKLS0gTUNEIHJlY3Vyc2l2bwptY2QgOjogSW50ZWdlciAtPiBJbnRlZ2VyIC0+IEludGVnZXIKbWNkIGEgMCA9IGEKbWNkIGEgYiA9IG1jZCBiIChhIGBtb2RgIGIpCgptYWluIDo6IElPICgpCm1haW4gPSBkbwogICAgbGV0IGEgPSA5OTk5OTkKICAgICAgICBiID0gMTAwMDAwMAoKICAgIGluaWNpbyA8LSBnZXRDUFVUaW1lCiAgICBsZXQgcmVzdWx0YWRvID0gbWNkIGEgYgogICAgcmVzdWx0YWRvIGBzZXFgIHJldHVybiAoKSAgLS0gRm9yemFyIGV2YWx1YWNpw7NuIGVzdHJpY3RhCiAgICBmaW4gPC0gZ2V0Q1BVVGltZQoKICAgIGxldCB0aWVtcG9OcyA9IGZyb21JbnRlZ3JhbCAoZmluIC0gaW5pY2lvKSAvIDFlMyAgLS0gQ29udmVydGlyIGRlIHBpY29zZWd1bmRvcyBhIG5hbm9zZWd1bmRvcwogICAgcHJpbnRmICJNQ0QgZGUgJWQgeSAlZCBlczogJWRcbiIgYSBiIHJlc3VsdGFkbwogICAgcHJpbnRmICJUaWVtcG8gZGUgZWplY3VjacOzbjogJS4wZiBuYW5vc2VndW5kb3NcbiIgKHRpZW1wb05zIDo6IERvdWJsZSkK