{"id":376,"date":"2010-08-09T08:23:08","date_gmt":"2010-08-09T08:23:08","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/el-numero-de-mersenne-47-en-haskell\/"},"modified":"2013-03-08T05:53:42","modified_gmt":"2013-03-08T05:53:42","slug":"el-numero-de-mersenne-47-en-haskell","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/el-numero-de-mersenne-47-en-haskell\/","title":{"rendered":"El n\u00famero de Mersenne 47 en Haskell"},"content":{"rendered":"<p>En el art\u00edculo <a href=\"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/cruce-de-listas\/\">Cruce de listas<\/a> abordamos el tema de la simplicidad y eficiencia de las soluciones. En este art\u00edculo deseo mostrar la capacidad de Haskell para calcular con grandes n\u00fameros enteros. Para ello, he elegido calcular el <a href=\"http:\/\/gaussianos.com\/confirmado-el-descubrimiento-del-primo-de-mersenne-numero-47\">\u00faltimo primo de Mersenne descubierto<\/a>.<\/p>\n<p>Los <a href=\"http:\/\/es.wikipedia.org\/wiki\/N%C3%BAmero_primo_de_Mersenne\">n\u00fameros primos de Mersenne<\/a> son los primos de la forma <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=2%5En-1&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"2^n-1\" class=\"latex\" \/>. El \u00faltimo primo de Mersenne descubierto es <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=M_%7B47%7D%3D2%5E%7B43112609%7D-1&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"M_{47}=2^{43112609}-1\" class=\"latex\" \/> que es un n\u00famero con m\u00e1s de 12 millones de cifras. El descubrimiento lo realiz\u00f3 Edson Smith el 23 de agosto de 2008. Dicho n\u00famero es el 47 primo de Mersenne conocido.<br \/>\n<!--more--><br \/>\nPara calcular con Haskell el valor de <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=M_%7B47%7D%3D2%5E%7B43112609%7D-1&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"M_{47}=2^{43112609}-1\" class=\"latex\" \/>, escribimos en el fichero mersenne.hs su definici\u00f3n<\/p>\n<pre lang=\"haskell\">\r\nmain = print (2^43112609-1)\r\n<\/pre>\n<p>A continuaci\u00f3n, compilamos el fichero <\/p>\n<pre lang=\"bash\">\r\n> ghc -O2 --make mersenne.hs \r\n   [1 of 1] Compiling Main (mersenne.hs,mersenne.o)\r\n   Linking mersenne ...\r\n<\/pre>\n<p>Finalmente, lo ejecutamos obteniendo el tiempo de ejecuci\u00f3n y<br \/>\nescribiendo el n\u00famero en el fichero mersenne.txt<\/p>\n<pre lang=\"bash\">\r\n> time .\/mersenne > mersenne.txt\r\n   \r\nreal    2m27.802s\r\nuser    2m26.945s\r\nsys     0m0.576s\r\n<\/pre>\n<p>El fichero con el n\u00famero puede leerse <a href=\"http:\/\/www.cs.us.es\/~jalonso\/Vestigium\/mersenne.txt\">aqu\u00ed<\/a>.<\/p>\n<p>Como se puede observar, el c\u00e1lculo ha sido simple y eficiente. <\/p>\n<p>Otra problema m\u00e1s dif\u00edcil es comprobar que el n\u00famero obtenido es primo.<\/p>\n<p>Ser\u00eda interesante comparar el c\u00e1lculo de <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=M_%7B47%7D&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"M_{47}\" class=\"latex\" \/> en otros lenguajes. Todas las soluciones alternativas ser\u00e1n bienvenidas e incorporadas a este art\u00edculo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En el art\u00edculo Cruce de listas abordamos el tema de la simplicidad y eficiencia de las soluciones. En este art\u00edculo deseo mostrar la capacidad de Haskell para calcular con grandes n\u00fameros enteros. Para ello, he elegido calcular el \u00faltimo primo de Mersenne descubierto. Los n\u00fameros primos de Mersenne son los primos de la forma &#8230;.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"footnotes":"","_jetpack_memberships_contains_paid_content":false},"categories":[5],"tags":[270,91,61],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/376"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/comments?post=376"}],"version-history":[{"count":12,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/376\/revisions"}],"predecessor-version":[{"id":3043,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/376\/revisions\/3043"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=376"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=376"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=376"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}