{"id":5170,"date":"2019-11-26T05:30:27","date_gmt":"2019-11-26T03:30:27","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=5170"},"modified":"2019-12-03T07:38:31","modified_gmt":"2019-12-03T05:38:31","slug":"mayor-divisor-primo","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/mayor-divisor-primo\/","title":{"rendered":"Mayor divisor primo"},"content":{"rendered":"<p>Los divisores primos de 13195 son 5, 7, 13 y 29. Por tanto, el mayor divisor primo de 13195 es 29.<\/p>\n<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   mayorDivisorPrimo :: Integer -> Integer\n<\/pre>\n<p>tal que (mayorDivisorPrimo n) es el mayor divisor primo de n. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   mayorDivisorPrimo 13195            ==  29\n   mayorDivisorPrimo 152416333181401  ==  12345701\n<\/pre>\n<p><strong>Nota<\/strong>: Este ejercicio est\u00e1 basado en el <a href=\"https:\/\/projecteuler.net\/problem=3\">problema 3<\/a> del <a href=\"https:\/\/projecteuler.net\">Proyecto Euler<\/a><\/p>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.Numbers.Primes (primeFactors)\n\n-- 1\u00aa soluci\u00f3n  (sin librer\u00edas auxiliares)\n-- =======================================\n\nmayorDivisorPrimo :: Integer -> Integer\nmayorDivisorPrimo = last . divisoresPrimos \n\n-- (divisoresPrimos n) es la lista de los divisores primos de n. Por\n-- ejemplo, \n--    divisoresPrimos 13195  ==  [5,7,13,29]\ndivisoresPrimos :: Integer -> [Integer]\ndivisoresPrimos 0 = []\ndivisoresPrimos 1 = []\ndivisoresPrimos n = m : divisoresPrimos (n `div` m)\n  where m = menorDivisorPrimo n \n\n-- (menorDivisorPrimo n) es el menor divisor primo de n. Por ejemplo, \n--    menorDivisorPrimo 24  ==  2\n--    menorDivisorPrimo 25  ==  5\n--    menorDivisorPrimo 29  ==  29\nmenorDivisorPrimo :: Integer -> Integer\nmenorDivisorPrimo x =\n  head [y | y <- 2 : [3,5..(ceiling . sqrt . fromIntegral) x] ++ [x]\n          , x `mod` y == 0]\n\n-- 2\u00aa soluci\u00f3n (con la librer\u00eda Data.Numbers.Primes)\n-- =================================================\n\nmayorDivisorPrimo2 :: Integer -> Integer\nmayorDivisorPrimo2 = last . primeFactors\n\n-- Comparaci\u00f3n de eficiencia\n-- =========================\n\n--   \u03bb> mayorDivisorPrimo 152416333181401\n--   12345701\n--   (1.96 secs, 1,630,201,856 bytes)\n--   \u03bb> mayorDivisorPrimo2 152416333181401\n--   12345701\n--   (2.01 secs, 5,445,284,432 bytes)\n<\/pre>\n<h4>Pensamiento<\/h4>\n<blockquote><p>\n\u00abUn programa de ordenador es una demostraci\u00f3n.\u00bb ~ Igor Rivin\n<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Los divisores primos de 13195 son 5, 7, 13 y 29. Por tanto, el mayor divisor primo de 13195 es 29. Definir la funci\u00f3n mayorDivisorPrimo :: Integer -> Integer tal que (mayorDivisorPrimo n) es el mayor divisor primo de n. Por ejemplo, mayorDivisorPrimo 13195 == 29 mayorDivisorPrimo 152416333181401 == 12345701 Nota: Este ejercicio est\u00e1 basado&#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":[5],"tags":[322,8,481,183,71,134,89,247,6,236],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5170"}],"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=5170"}],"version-history":[{"count":4,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5170\/revisions"}],"predecessor-version":[{"id":5216,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5170\/revisions\/5216"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=5170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=5170"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=5170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}