{"id":5810,"date":"2020-04-23T05:30:38","date_gmt":"2020-04-23T03:30:38","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=5810"},"modified":"2022-03-26T11:35:31","modified_gmt":"2022-03-26T09:35:31","slug":"huecos-de-aquiles","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/huecos-de-aquiles\/","title":{"rendered":"Huecos de Aquiles"},"content":{"rendered":"<p>Un n\u00famero de Aquiles es un n\u00famero natural n que es potente (es decir, si p es un divisor primo de n, entonces p\u00b2 tambi\u00e9n lo es) y no es una potencia perfecta (es decir, no existen n\u00fameros naturales m y k tales que n es igual a m^k). Por ejemplo,<\/p>\n<ul>\n<li>108 es un n\u00famero de Aquiles proque es un n\u00famero potente (ya que su factorizaci\u00f3n es 2^2 \u00b7 3^3, sus divisores primos son 2 and 3 y sus cuadrados (2^2 = 4 y 3^2 = 9) son divisores de 108. Adem\u00e1s, 108 no es una potencia perfecta.<\/li>\n<li>360 no es un n\u00famero de Aquiles ya que 5 es un divisor primo de 360, pero 5^2 = 15 no lo es.<\/li>\n<li>784 no es un n\u00famero de Aquiles porque, aunque es potente, es una potencia perfecta ya que 784 = 28^2.<\/li>\n<\/ul>\n<p>Los primeros n\u00fameros de Aquiles son<\/p>\n<pre lang=\"text\"> \n   72, 108, 200, 288, 392, 432, 500, 648, 675, 800, 864, 968, 972, ...\n<\/pre>\n<p>Definir las funciones<\/p>\n<pre lang=\"text\"> \n   esAquiles              :: Integer -> Bool\n   huecosDeAquiles        :: [Integer]\n   graficaHuecosDeAquiles :: Int -> IO ()\n<\/pre>\n<p>tales que<\/p>\n<ul>\n<li>(esAquiles x) se verifica si x es un n\u00famero de Aquiles. Por ejemplo, <\/li>\n<\/ul>\n<pre lang=\"text\">   \n     esAquiles 108         ==  True\n     esAquiles 360         ==  False\n     esAquiles 784         ==  False\n     esAquiles 5425069447  ==  True\n     esAquiles 5425069448  ==  True\n<\/pre>\n<ul>\n<li>huecosDeAquiles es la sucesi\u00f3n de la diferencias entre los n\u00fameros de Aquiles consecutivos. Por ejemplo,<\/li>\n<\/ul>\n<pre lang=\"text\">   \n     \u03bb> take 15 huecosDeAquiles\n     [36,92,88,104,40,68,148,27,125,64,104,4,153,27,171]\n<\/pre>\n<ul>\n<li>(graficaHuecosDeAquiles n) dibuja la gr\u00e1fica de los n primeros huecos de Aquiles. Por ejemplo, (graficaHuecosDeAquiles 160) dibuja<\/li>\n<\/ul>\n<p><a href=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2019\/04\/Huecos_de_Aquiles.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2019\/04\/Huecos_de_Aquiles.png?resize=640%2C480\" alt=\"\" width=\"640\" height=\"480\" class=\"aligncenter size-full wp-image-4901\" srcset=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2019\/04\/Huecos_de_Aquiles.png?w=640&amp;ssl=1 640w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2019\/04\/Huecos_de_Aquiles.png?resize=300%2C225&amp;ssl=1 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.List (group)\nimport Data.Numbers.Primes (primeFactors)\nimport Graphics.Gnuplot.Simple\n\n-- Definici\u00f3n de esAquiles\n-- =======================\n\nesAquiles :: Integer -> Bool\nesAquiles x = esPotente x && noEsPotenciaPerfecta x\n\n-- (esPotente x) se verifica si x es potente. Por ejemplo,\n--    esPotente 108  ==  True\n--    esPotente 360  ==  False\n--    esPotente 784  ==  True\nesPotente :: Integer -> Bool\nesPotente x = all (>1) (exponentes x)\n\n-- (exponentes x) es la lista de los exponentes en la factorizaci\u00f3n de\n-- x. Por ejemplo,\n--    exponentes 108  ==  [2,3]\n--    exponentes 360  ==  [3,2,1]\n--    exponentes 784  ==  [4,2]\nexponentes :: Integer -> [Int]\nexponentes x = map length (group (primeFactors x))\n\n-- (noEsPotenciaPerfecta x) se verifica si x no es una potencia\n-- perfecta. Por ejemplo,\n--    noEsPotenciaPerfecta 108  ==  True\n--    noEsPotenciaPerfecta 360  ==  True\n--    noEsPotenciaPerfecta 784  ==  False\nnoEsPotenciaPerfecta :: Integer -> Bool\nnoEsPotenciaPerfecta x = foldl1 gcd (exponentes x) == 1 \n\n-- Definici\u00f3n de huecosDeAquiles\n-- =============================\n\nhuecosDeAquiles :: [Integer]\nhuecosDeAquiles = zipWith (-) (tail aquiles) aquiles\n\n-- aquiles es la sucesi\u00f3n de los n\u00fameros de Aquiles. Por ejemplo, \n--    \u03bb> take 15 aquiles\n--    [72,108,200,288,392,432,500,648,675,800,864,968,972,1125,1152]\naquiles :: [Integer]\naquiles = filter esAquiles [2..]\n\n-- Definici\u00f3n de graficaHuecosDeAquiles\n-- ====================================\n\ngraficaHuecosDeAquiles :: Int -> IO ()\ngraficaHuecosDeAquiles n =\n  plotList [ Key Nothing\n           , PNG \"Huecos_de_Aquiles.png\"\n           ]\n           (take n huecosDeAquiles)\n<\/pre>\n<h4>Otras soluciones<\/h4>\n<ul>\n<li>Se pueden escribir otras soluciones en los comentarios.\n<li>El c\u00f3digo se debe escribir entre una l\u00ednea con &#60;pre lang=&quot;haskell&quot;&#62; y otra con &#60;\/pre&#62;\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Un n\u00famero de Aquiles es un n\u00famero natural n que es potente (es decir, si p es un divisor primo de n, entonces p\u00b2 tambi\u00e9n lo es) y no es una potencia perfecta (es decir, no existen n\u00fameros naturales m y k tales que n es igual a m^k). Por ejemplo, 108 es un n\u00famero&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","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":[4],"tags":[41,38,359,155,376,13,28,10,11,309,247,45,47,76],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5810"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/comments?post=5810"}],"version-history":[{"count":3,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5810\/revisions"}],"predecessor-version":[{"id":5839,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5810\/revisions\/5839"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=5810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=5810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=5810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}