{"id":3172,"date":"2017-04-04T06:00:18","date_gmt":"2017-04-04T04:00:18","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=3172"},"modified":"2017-04-11T09:06:18","modified_gmt":"2017-04-11T07:06:18","slug":"distancias-entre-primos-consecutivos","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/distancias-entre-primos-consecutivos\/","title":{"rendered":"Distancias entre primos consecutivos"},"content":{"rendered":"<p>Los 15 primeros n\u00fameros primos son<\/p>\n<pre lang=\"text\">\n   2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47\n<\/pre>\n<p>Las distancias entre los elementos consecutivos son<\/p>\n<pre lang=\"text\">\n   1, 2, 2, 4, 2,  4,  2,  4,  6,  2,  6,  4,  2,  4\n<\/pre>\n<p>La distribuci\u00f3n de las distancias es<\/p>\n<pre lang=\"text\">\n   (1,1), (2,6), (4,5), (6,2)\n<\/pre>\n<p>(es decir, el 1 aparece una vez, el 2 aparece 6 veces, etc.) La frecuencia de las distancias es<\/p>\n<pre lang=\"text\">\n   (1,7.142857), (2,42.857143), (4,35.714287), (6,14.285714)\n<\/pre>\n<p>(es decir, el 1 aparece el 7.142857%, el 2 el 42.857143% etc.)<\/p>\n<p>Definir las funciones<\/p>\n<pre lang=\"text\">\n  cuentaDistancias        :: Int -> [(Int,Int)]\n  frecuenciasDistancias   :: Int -> [(Int,Float)]\n  graficas                :: [Int] -> IO ()\n  distanciasMasFrecuentes :: Int -> [Int]\n<\/pre>\n<p>tales que<\/p>\n<ul>\n<li>(cuentaDistancias n) es la distribuci\u00f3n de distancias entre los n primeros primos consecutivos. Por ejemplo, <\/li>\n<\/ul>\n<pre lang=\"text\">\n     \u03bb> cuentaDistancias 15\n     [(1,1),(2,6),(4,5),(6,2)]\n     \u03bb> cuentaDistancias 100\n     [(1,1),(2,25),(4,26),(6,25),(8,7),(10,7),(12,4),(14,3),(18,1)]\n<\/pre>\n<ul>\n<li>(frecuenciasDistancias n) es la frecuencia de distancias entre los n primeros primos consecutivos. Por ejemplo,<\/li>\n<\/ul>\n<pre lang=\"text\">\n     \u03bb> frecuenciasDistancias 15\n     [(1,7.142857),(2,42.857143),(4,35.714287),(6,14.285714)]\n     \u03bb> frecuenciasDistancias 30\n     [(1,3.4482758),(2,34.482758),(4,34.482758),(6,24.137932),(8,3.4482758)]\n<\/pre>\n<ul>\n<li>(graficas ns) dibuja las gr\u00e1ficas de (frecuenciasDistancias k) para k en ns. Por ejemplo, <code>(graficas [10,20,30])<\/code> dibuja<br \/>\n<a href=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos1.png?resize=640%2C480\" alt=\"Distancias_entre_primos_consecutivos1\" width=\"640\" height=\"480\" class=\"aligncenter size-full wp-image-3175\" srcset=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos1.png?w=640&amp;ssl=1 640w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos1.png?resize=300%2C225&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos1.png?resize=100%2C75&amp;ssl=1 100w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos1.png?resize=150%2C112&amp;ssl=1 150w\" sizes=\"(max-width: 640px) 100vw, 640px\" data-recalc-dims=\"1\" \/><\/a><br \/>\n<code>(graficas [1000,2000,3000])<\/code> dibuja<br \/>\n<a href=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos2.png?resize=640%2C480\" alt=\"Distancias_entre_primos_consecutivos2\" width=\"640\" height=\"480\" class=\"aligncenter size-full wp-image-3176\" srcset=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos2.png?w=640&amp;ssl=1 640w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos2.png?resize=300%2C225&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos2.png?resize=100%2C75&amp;ssl=1 100w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos2.png?resize=150%2C112&amp;ssl=1 150w\" sizes=\"(max-width: 640px) 100vw, 640px\" data-recalc-dims=\"1\" \/><\/a><br \/>\ny <code>(graficas [100000,200000,300000])<\/code> dibuja<br \/>\n<a href=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos3.png?resize=640%2C480\" alt=\"Distancias_entre_primos_consecutivos3\" width=\"640\" height=\"480\" class=\"aligncenter size-full wp-image-3177\" srcset=\"https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos3.png?w=640&amp;ssl=1 640w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos3.png?resize=300%2C225&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos3.png?resize=100%2C75&amp;ssl=1 100w, https:\/\/i0.wp.com\/www.glc.us.es\/~jalonso\/exercitium\/wp-content\/uploads\/2017\/04\/Distancias_entre_primos_consecutivos3.png?resize=150%2C112&amp;ssl=1 150w\" sizes=\"(max-width: 640px) 100vw, 640px\" data-recalc-dims=\"1\" \/><\/a><\/li>\n<li>(distanciasMasFrecuentes n) es la lista de las distancias m\u00e1s frecuentes entre los elementos consecutivos de la lista de los n primeros primos. Por ejemplo, <\/li>\n<\/ul>\n<pre lang=\"text\">  \n     distanciasMasFrecuentes 15     ==  [2]\n     distanciasMasFrecuentes 26     ==  [2,4]\n     distanciasMasFrecuentes 32     ==  [4]\n     distanciasMasFrecuentes 41     ==  [2,4,6]\n     distanciasMasFrecuentes 77     ==  [6]\n     distanciasMasFrecuentes 160    ==  [4,6]\n     distanciasMasFrecuentes (10^6) == [6]\n<\/pre>\n<p>Comprobar con QuickCheck si para todo n > 160 se verifica que (distanciasMasFrecuentes n) es [6].<\/p>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.Numbers.Primes\nimport qualified Data.Map as M \nimport Graphics.Gnuplot.Simple\nimport Test.QuickCheck\n\ncuentaDistancias :: Int -> [(Int,Int)]\ncuentaDistancias = M.toList . dicDistancias\n\ndicDistancias :: Int -> M.Map Int Int\ndicDistancias n =\n  M.fromListWith (+) (zip (distancias n) (repeat 1))\n\ndistancias :: Int -> [Int]\ndistancias n =\n  zipWith (-) (tail xs) xs\n  where xs = take n primes\n\nfrecuenciasDistancias :: Int -> [(Int,Float)]\nfrecuenciasDistancias n =\n  [(k,(100 * fromIntegral x) \/ n1) | (k,x) <- cuentaDistancias n]\n  where n1 = fromIntegral (n-1)\n\ngraficas :: [Int] -> IO ()\ngraficas ns =\n  plotLists [Key Nothing]\n            (map frecuenciasDistancias ns)\n\ndistanciasMasFrecuentes :: Int -> [Int]\ndistanciasMasFrecuentes n =\n  M.keys (M.filter (==m) d)\n  where d = dicDistancias n\n        m = maximum (M.elems d)\n\n-- La propiedad es\nprop_distanciasMasFrecuentes :: Int -> Bool\nprop_distanciasMasFrecuentes n =\n  distanciasMasFrecuentes (161 + abs n) == [6]\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Los 15 primeros n\u00fameros primos son 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47 Las distancias entre los elementos consecutivos son 1, 2, 2, 4, 2, 4, 2, 4, 6, 2, 6, 4, 2, 4 La distribuci\u00f3n de las distancias es (1,1), (2,6), (4,5), (6,2) (es decir, el&#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":[130,8,290,245,38,183,261,376,388,10,15,11,375,173,49,45,47,146,260,9,76],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3172"}],"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=3172"}],"version-history":[{"count":9,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3172\/revisions"}],"predecessor-version":[{"id":3210,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/3172\/revisions\/3210"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=3172"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=3172"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=3172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}