{"id":6529,"date":"2021-06-22T06:00:42","date_gmt":"2021-06-22T04:00:42","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=6529"},"modified":"2022-01-26T11:59:43","modified_gmt":"2022-01-26T09:59:43","slug":"numeros-superabundantes","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/numeros-superabundantes\/","title":{"rendered":"N\u00fameros superabundantes"},"content":{"rendered":"<p>El enunciado de un problema para la IMO (Olimpiada Internacional de Matem\u00e1ticas) de 1983 es<\/p>\n<blockquote><p>\n  Sea n un n\u00famero entero positivo. Sea \u03c3(n) la suma de los divisores positivos de n (incluyendo al 1 y al n). Se dice que un entero m \u2265 1 es superabundante (P. Erd\u00f6s, 1944) si \u2200k \u2208 {1, 2, &#8230;, m-1}, \u03c3(m)\/m > \u03c3(k)\/k. Demostrar que esisten infinitos n\u00fameros superabundantes.\n<\/p><\/blockquote>\n<p>Definir la lista<\/p>\n<pre lang=\"text\">\n   superabundantes :: [Integer]\n<\/pre>\n<p>cuyos elementos son los n\u00fameros superabundantes. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   take 7 superabundantes == [1,2,4,6,12,24,36]\n   superabundantes !! 25  ==  166320\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.Numbers.Primes (primeFactors)\nimport Data.List (genericLength, group)\nimport Data.Ratio ((%))\n\n-- 1\u00aa soluci\u00f3n\n-- ===========\n\nsuperabundantes :: [Integer]\nsuperabundantes =\n  filter esSuperabundante [1..]\n\n-- (esSuperabundante n) se verifica si n es superabundante. Por ejemplo,\n--    esSuperabundante 4  ==  True\n--    esSuperabundante 5  ==  False\n--    esSuperabundante 6  ==  True\nesSuperabundante :: Integer -> Bool\nesSuperabundante n =\n  and [k * n' > n * sumaDivisores k | k <- [1..n-1]]\n  where n' = sumaDivisores n\n\n-- (sumaDivisores n) es la suma de los divisores de n. Por ejemplo.\n--      sumaDivisores 35  ==  48\nsumaDivisores :: Integer -> Integer\nsumaDivisores x =\n  product [(p^(e+1)-1) `div` (p-1) | (p,e) <- factorizacion x]\n\n-- (factorizacion x) es la lista de las bases y exponentes de la\n-- descomposici\u00f3n prima de x. Por ejemplo,\n--    factorizacion 600  ==  [(2,3),(3,1),(5,2)]\nfactorizacion :: Integer -> [(Integer,Integer)]\nfactorizacion = map primeroYlongitud . group . primeFactors\n\n-- (primeroYlongitud xs) es el par formado por el primer elemento de xs\n-- y la longitud de xs. Por ejemplo,\n--    primeroYlongitud [3,2,5,7] == (3,4)\nprimeroYlongitud :: [a] -> (a,Integer)\nprimeroYlongitud (x:xs) = (x, 1 + genericLength xs)\nprimeroYlongitud _      = error \"No tiene elementos\"\n\n-- 2\u00aa soluci\u00f3n\n-- ===========\n\nsuperabundantes2 :: [Integer]\nsuperabundantes2 =\n  [n | (n,a,b) <- zip3 [1..] cocientes maximosCocientes,\n        a == b]\n-- cocientes es la lista de los cocientes \u03c3(k)\/k. Por ejemplo,\n--    \u03bb> take 7 cocientes\n--    [1 % 1,3 % 2,4 % 3,7 % 4,6 % 5,2 % 1,8 % 7]\ncocientes :: [Rational]\ncocientes =\n  [sumaDivisores n % n | n <- [1..]]\n\n-- maximosCocientes es la lista de los m\u00e1ximos de los cocientes\n-- \u03c3(k)\/k. Por ejemplo,\n--    \u03bb> take 7 maximosCocientes\n--    [1 % 1,3 % 2,3 % 2,7 % 4,7 % 4,2 % 1,2 % 1]\nmaximosCocientes :: [Rational]\nmaximosCocientes = scanl1 max cocientes\n\n-- Comparaci\u00f3n de eficiencia\n-- =========================\n\n-- La comparaci\u00f3n es\n--    \u03bb> superabundantes !! 22\n--    27720\n--    (6.72 secs, 11,453,705,704 bytes)\n--    \u03bb> superabundantes2 !! 22\n--    27720\n--    (0.54 secs, 902,054,096 bytes)\n<\/pre>\n<h4>Nuevas soluciones<\/h4>\n<ul>\n<li>En los comentarios se pueden escribir nuevas soluciones.\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>El enunciado de un problema para la IMO (Olimpiada Internacional de Matem\u00e1ticas) de 1983 es Sea n un n\u00famero entero positivo. Sea \u03c3(n) la suma de los divisores positivos de n (incluyendo al 1 y al n). Se dice que un entero m \u2265 1 es superabundante (P. Erd\u00f6s, 1944) si \u2200k \u2208 {1, 2,&#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":[2],"tags":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/6529"}],"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=6529"}],"version-history":[{"count":3,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/6529\/revisions"}],"predecessor-version":[{"id":6541,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/6529\/revisions\/6541"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=6529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=6529"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=6529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}