{"id":2164,"date":"2016-02-24T06:00:20","date_gmt":"2016-02-24T04:00:20","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=2164"},"modified":"2022-03-25T20:20:08","modified_gmt":"2022-03-25T18:20:08","slug":"sumas-de-potencias-de-3-primos","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/sumas-de-potencias-de-3-primos\/","title":{"rendered":"Sumas de potencias de 3 primos"},"content":{"rendered":"<p>Los primeros n\u00fameros de la forma p\u00b2+q\u00b3+r\u2074, con p, q y r primos son<\/p>\n<pre lang=\"text\">\n   28 = 2\u00b2 + 2\u00b3 + 2\u2074\n   33 = 3\u00b2 + 2\u00b3 + 2\u2074\n   47 = 2\u00b2 + 3\u00b3 + 2\u2074\n   49 = 5\u00b2 + 2\u00b3 + 2\u2074\n<\/pre>\n<p>Definir la sucesi\u00f3n<\/p>\n<pre lang=\"text\">\n   sumas3potencias :: [Integer]\n<\/pre>\n<p>cuyos elementos son los n\u00fameros que se pueden escribir de la forma p\u00b2+q\u00b3+r\u2074, con p, q y r primos. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   \u03bb> take 15 sumas3potencias\n   [28,33,47,49,52,68,73,92,93,98,112,114,117,133,138]\n   \u03bb> sumas3potencias !! 234567\n   8953761\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.Numbers.Primes (primes)\n\n-- 1\u00aa soluci\u00f3n\n-- ===========\n\nsumas3potencias1 :: [Integer]\nsumas3potencias1 = filter esTripleSuma [1..]\n \n-- (esTripleSuma n) se verifica si n se puede escribir de la forma\n-- p\u00b2+q\u00b3+r\u2074, con p, q y r primos. Por ejemplo, \n--    esTripleSuma 33  ==  True\n--    esTripleSuma 45  ==  False\nesTripleSuma :: Integer -> Bool\nesTripleSuma = not . null . triplesSumas  \n\n-- (triplesSumas n) es la lista de las ternas de primos (p,q,r) tales\n-- que p\u00b2+q\u00b3+r\u2074 = n. Por ejemplo,\n--    triplesSumas 33   ==  [(3,2,2)]\n--    triplesSumas 145  ==  [(11,2,2),(2,5,2)]\n--    triplesSumas 45   ==  []\ntriplesSumas :: Integer -> [(Integer,Integer,Integer)]\ntriplesSumas n =  \n    [(p,q,r) \n    | r <- xs, \n      q <- xs, \n      let p2 = n - q^3 - r^4,\n      let p = (floor . sqrt . fromIntegral) p2,\n      p*p == p2,\n      isPrime p]\n    where xs = takeWhile (< (ceiling $ sqrt $ fromIntegral n)) primes\n\n-- 2\u00aa soluci\u00f3n\n-- ===========\n\nsumas3potencias2 :: [Integer]\nsumas3potencias2 = sumaOrdenadaInf as (sumaOrdenadaInf bs cs)\n\nsumaOrdenadaInf:: [Integer] -> [Integer] -> [Integer]\nsumaOrdenadaInf xs ys = mezclaTodas [map (+x) ys | x <- xs]\n\nmezclaTodas :: Ord a => [[a]] -> [a]\nmezclaTodas = foldr1 xmezcla\n    where xmezcla (x:xs) ys = x : mezcla xs ys\n\nmezcla :: Ord a => [a] -> [a] -> [a]\nmezcla (x:xs) (y:ys) | x < y  = x : mezcla xs (y:ys)\n                     | x == y = x : mezcla xs ys\n                     | x > y  = y : mezcla (x:xs) ys\n \nas = map (^2) primes\nbs = map (^3) primes\ncs = map (^4) primes\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Los primeros n\u00fameros de la forma p\u00b2+q\u00b3+r\u2074, con p, q y r primos son 28 = 2\u00b2 + 2\u00b3 + 2\u2074 33 = 3\u00b2 + 2\u00b3 + 2\u2074 47 = 2\u00b2 + 3\u00b3 + 2\u2074 49 = 5\u00b2 + 2\u00b3 + 2\u2074 Definir la sucesi\u00f3n sumas3potencias :: [Integer] cuyos elementos son los n\u00fameros que se&#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":[7],"tags":[322,8,38,282,183,174,415,181,141,11,173,236,34],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2164"}],"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=2164"}],"version-history":[{"count":3,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2164\/revisions"}],"predecessor-version":[{"id":2193,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2164\/revisions\/2193"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=2164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=2164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=2164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}