{"id":2247,"date":"2016-03-18T06:00:21","date_gmt":"2016-03-18T04:00:21","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=2247"},"modified":"2016-05-02T09:03:35","modified_gmt":"2016-05-02T07:03:35","slug":"comportamiento-del-ultimo-digito-en-primos-consecutivos","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/comportamiento-del-ultimo-digito-en-primos-consecutivos\/","title":{"rendered":"Comportamiento del \u00faltimo d\u00edgito en primos consecutivos"},"content":{"rendered":"<p>El pasado 11 de marzo se ha publicado el art\u00edculo <a href=\"http:\/\/arxiv.org\/abs\/1603.03720\">Unexpected biases in the distribution of consecutive primes<\/a> en el que muestra que los n\u00fameros primos repelen a otros primos que terminan en el mismo d\u00edgito.<\/p>\n<p>La lista de los \u00faltimos d\u00edgitos de los 30 primeros n\u00fameros es<\/p>\n<pre lang=\"text\">\n   [2,3,5,7,1,3,7,9,3,9,1,7,1,3,7,3,9,1,7,1,3,9,3,9,7,1,3,7,9,3]\n<\/pre>\n<p>Se observa que hay 6 n\u00fameros que su \u00faltimo d\u00edgito es un 1 y de sus consecutivos 4 terminan en 3 y 2 terminan en 7.<\/p>\n<p>Definir la funci\u00f3n<\/p>\n<pre lang=\"text\">\n   distribucionUltimos :: Int -> M.Matrix Integer\n<\/pre>\n<p>tal que (distribucionUltimos n) es la matriz cuyo elemento (i,j) indica cu\u00e1ntos de los n primeros n\u00fameros primos terminan en i y su siguiente n\u00famero primo termina en j. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   \u03bb> distribucionUltimos 30\n   ( 0 0 4 0 0 0 2 0 0 )\n   ( 0 0 1 0 0 0 0 0 0 )\n   ( 0 0 0 0 1 0 4 0 4 )\n   ( 0 0 0 0 0 0 0 0 0 )\n   ( 0 0 0 0 0 0 1 0 0 )\n   ( 0 0 0 0 0 0 0 0 0 )\n   ( 4 0 1 0 0 0 0 0 2 )\n   ( 0 0 0 0 0 0 0 0 0 )\n   ( 2 0 3 0 0 0 1 0 0 )\n   \n   \u03bb> distribucionUltimos (10^5)\n   ( 4104    0 7961    0    0    0 8297    0 4605 )\n   (    0    0    1    0    0    0    0    0    0 )\n   ( 5596    0 3604    0    1    0 7419    0 8387 )\n   (    0    0    0    0    0    0    0    0    0 )\n   (    0    0    0    0    0    0    1    0    0 )\n   (    0    0    0    0    0    0    0    0    0 )\n   ( 6438    0 6928    0    0    0 3627    0 8022 )\n   (    0    0    0    0    0    0    0    0    0 )\n   ( 8830    0 6513    0    0    0 5671    0 3995 )\n<\/pre>\n<p>Nota: Se observa c\u00f3mo se \u00abrepelen\u00bb ya que en las filas del 1, 3, 7 y 9 el menor elemento es el de la diagonal.<\/p>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.Numbers.Primes\nimport Data.Array\nimport qualified Data.Matrix as M\n\n-- (ultimo n) es el \u00faltimo d\u00edgito de n.    \nultimo :: Integer -> Integer\nultimo n = n `mod` 10\n\n-- ultimos es la lista de el \u00faltimo d\u00edgito de los primos.\n--    \u03bb> take 20 ultimos\n--    [2,3,5,7,1,3,7,9,3,9,1,7,1,3,7,3,9,1,7,1]\nultimos :: [Integer]\nultimos = map ultimo primes\n\n-- ultimosConsecutivos es la lista de los \u00faltimos d\u00edgitos de los primos\n-- consecutivos. \n--    \u03bb> take 10 ultimosConsecutivos\n--    [(2,3),(3,5),(5,7),(7,1),(1,3),(3,7),(7,9),(9,3),(3,9),(9,1)]\nultimosConsecutivos :: [(Integer,Integer)]\nultimosConsecutivos = zip ultimos (tail ultimos)\n\n-- (histograma r is) es el vector formado contando cuantas veces\n-- aparecen los elementos del rango r en la lista de \u00edndices is. Por\n-- ejemplo, \n--    ghci> histograma (0,5) [3,1,4,1,5,4,2,7]\n--    array (0,5) [(0,0),(1,2),(2,1),(3,1),(4,2),(5,1)]\nhistograma :: (Ix a, Num b) => (a,a) -> [a] -> Array a b\nhistograma r is = \n    accumArray (+) 0 r [(i,1) | i <- is, inRange r i]\n\ndistribucionUltimos :: Int -> M.Matrix Integer\ndistribucionUltimos n =\n    M.fromList 9 9 (elems (histograma ((1,1),(9,9)) (take n ultimosConsecutivos)))\n<\/pre>\n<h4>Soluci\u00f3n en Maxima<\/h4>\n<pre lang=\"text\">\ndistribucionUltimos (n) := block (\n  [r : zeromatrix (9,9),\n   xs : ultimos (n),\n   i, j],\n  unless length (xs) < 2 do\n    ( i : first (xs),\n      j : second (xs),\n      r[i,j] : 1 + r[i,j],\n      xs : rest (xs)),\n  r)$\n\n\/* ultimos(n) es la lista del \u00faltimo d\u00edgito de los n primeros primos.\n      (%i5) ultimos (30);\n      (%o5) [2,3,5,7,1,3,7,9,3,9,1,7,1,3,7,3,9,1,7,1,3,9,3,9,7,1,3,7,9,3,7]\n*\/\nultimos (n) := block ([r:[], p:2],\n  for k from 0 thru n do\n    ( r : cons (mod (p,10), r),\n      p : next_prime (p) ),\n  reverse (r))$  \n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>El pasado 11 de marzo se ha publicado el art\u00edculo Unexpected biases in the distribution of consecutive primes en el que muestra que los n\u00fameros primos repelen a otros primos que terminan en el mismo d\u00edgito. La lista de los \u00faltimos d\u00edgitos de los 30 primeros n\u00fameros es [2,3,5,7,1,3,7,9,3,9,1,7,1,3,7,3,9,1,7,1,3,9,3,9,7,1,3,7,9,3] Se observa que hay 6 n\u00fameros&#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":[249,245,346,336,10,42,89,11,45,47,9],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2247"}],"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=2247"}],"version-history":[{"count":5,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2247\/revisions"}],"predecessor-version":[{"id":2396,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/2247\/revisions\/2396"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=2247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=2247"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=2247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}