{"id":1020,"date":"2015-01-30T06:00:59","date_gmt":"2015-01-30T04:00:59","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=1020"},"modified":"2015-02-06T08:55:06","modified_gmt":"2015-02-06T06:55:06","slug":"numeros-polidivisibles","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/numeros-polidivisibles\/","title":{"rendered":"N\u00fameros polidivisibles"},"content":{"rendered":"<h4>Introducci\u00f3n<\/h4>\n<p>Un n\u00famero natural es <a href=\"http:\/\/bit.ly\/1J1R96x\">polidivisible<\/a> si cumple las siguientes condiciones:<\/p>\n<ul>\n<li>El n\u00famero formado por sus dos primeros d\u00edgitos es divisible por 2.<\/li>\n<li>El n\u00famero formado por sus tres primeros d\u00edgitos es divisible por 3.<\/li>\n<li>El n\u00famero formado por sus cuatros primeros d\u00edgitos es divisible por 4.<\/li>\n<li>etc\u00e9tera.<\/li>\n<\/ul>\n<p>Por ejemplo, el n\u00famero 345654 es un n\u00famero polidivisible ya que<\/p>\n<ul>\n<li>34 es divisible por 2,<\/li>\n<li>345 es divisible por 3,<\/li>\n<li>3456 es divisible por 4,<\/li>\n<li>34565 es divisible por 5 y<\/li>\n<li>345654 es divisible por 6.<\/li>\n<\/ul>\n<p>pero 123456 no lo es, porque 1234 no es divisible por 4.<\/p>\n<h4>Enunciado<\/h4>\n<p>Definir las funciones<\/p>\n<pre lang=\"text\">\n  polidivisibles :: [Integer]\n  polidivisiblesN :: Integer -> [Integer]\n<\/pre>\n<p>tales que<\/p>\n<ul>\n<li>polidivisible es la sucesi\u00f3n cuyos elementos son los n\u00fameros polidivisibles. Por ejemplo, <\/li>\n<\/ul>\n<pre lang=\"text\">\n     ghci> take 20 polidivisibles\n     [1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,22,24,26,28,30]\n     ghci> take 10 (dropWhile (<=100) polidivisibles)\n     [102,105,108,120,123,126,129,141,144,147]\n<\/pre>\n<ul>\n<li>(polidivisiblesN k) es la lista de los n\u00fameros polidivisibles con k d\u00edgitos. Por ejemplo,<\/li>\n<\/ul>\n<pre lang=\"text\">\n     ghci> polidivisiblesN 2\n     [10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,\n      50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,\n      90,92,94,96,98]\n<\/pre>\n<p>Comprobar que, para n entre 1 y 5, la cantidad de n\u00fameros polidivisibles de n d\u00edgitos es 9*10^(n-1)\/n!.<\/p>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\npolidivisibles :: [Integer]\npolidivisibles = [n | n <- [1..], esPolidivisible n]\n\n-- (esPolidivisible n) se verifica si n es polidivisible. Por ejemplo, \n--    esPolidivisible 345654  ==  True\n--    esPolidivisible 123456  ==  False\nesPolidivisible :: Integer -> Bool\nesPolidivisible n = \n    and [(n `div` 10^(m-k)) `mod` k == 0 | k <- [2..m]] \n    where m = fromIntegral (length (show n))\n\n-- (polidivisiblesN n) es la lista de los n\u00fameros polidivisibles de n\n-- d\u00edgitos. Por ejemplo, \n--    take 6 (polidivisiblesN 3)  ==  [102,105,108,120,123,126]\n--    take 6 (polidivisiblesN 5)  ==  [10200,10205,10240,10245,10280,10285]\npolidivisiblesN :: Integer -> [Integer]\npolidivisiblesN n = \n    takeWhile (<=10^n-1) (dropWhile (<10^(n-1)) polidivisibles)\n\n-- (conjetura k) se verifica si la cantidad de n\u00fameros polidivisibles de\n-- k d\u00edgitos es 9*10^(k-1)\/k!. \nconjetura :: Integer -> Bool\nconjetura k = \n    fromIntegral (length (polidivisiblesN k)) == 9*10^(k-1) `div` factorial k\n    where factorial n = product [1..n]\n\n-- La comprobaci\u00f3n de la conjetura para k entre 1 y 5 es\n--    ghci> all conjetura [1..5]\n--    True\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n Un n\u00famero natural es polidivisible si cumple las siguientes condiciones: El n\u00famero formado por sus dos primeros d\u00edgitos es divisible por 2. El n\u00famero formado por sus tres primeros d\u00edgitos es divisible por 3. El n\u00famero formado por sus cuatros primeros d\u00edgitos es divisible por 4. etc\u00e9tera. Por ejemplo, el n\u00famero 345654 es un&#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":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/1020"}],"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=1020"}],"version-history":[{"count":7,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/1020\/revisions"}],"predecessor-version":[{"id":1050,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/1020\/revisions\/1050"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=1020"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=1020"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=1020"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}