{"id":1683,"date":"2015-11-06T07:00:08","date_gmt":"2015-11-06T05:00:08","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=1683"},"modified":"2015-11-13T08:23:32","modified_gmt":"2015-11-13T06:23:32","slug":"primos-gemelos-proximos-a-multiplos-de-6","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/primos-gemelos-proximos-a-multiplos-de-6\/","title":{"rendered":"Primos gemelos pr\u00f3ximos a m\u00faltiplos de 6"},"content":{"rendered":"<p>Un par de n\u00fameros primos (p,q) es un par de <a href=\"http:\/\/bit.ly\/1RAo6KU\">n\u00fameros primos gemelos<\/a> si su distancia de 2; es decir, si q = p+2. Por ejemplo, (17,19) es una par de n\u00fameros primos gemelos.<\/p>\n<p>Se dice que un par de n\u00fameros (x,y) est\u00e1 <a href=\"http:\/\/bit.ly\/1RAod9l\">pr\u00f3ximo a un m\u00faltiplo de 6<\/a> si es de la forma <code>(6*n-1,6*n+1)<\/code>. Por ejemplo, (17,19) est\u00e1 cerca de un m\u00faltiplo de 6 porque (17,19) = <code>(6*3-1,6*3+1)<\/code>.<\/p>\n<p>Definir las funciones<\/p>\n<pre lang=\"text\">\n   primosGemelos :: Integer -> [(Integer,Integer)]\n   primosGemelosNoProximosAmultiplosDe6 :: Integer -> [(Integer,Integer)]\n<\/pre>\n<p>tales que<\/p>\n<ul>\n<li>(primosGemelos n) es la lista de los primos gemelos menores que n. Por ejemplo,<\/li>\n<\/ul>\n<pre lang=\"text\">\n     primosGemelos 50  == [(3,5),(5,7),(11,13),(17,19),(29,31),(41,43)]\n     primosGemelos 43  == [(3,5),(5,7),(11,13),(17,19),(29,31)]\n<\/pre>\n<ul>\n<li>(primosGemelosNoProximosAmultiplosDe6 n) es la lista de los primos gemelos menores que n que no est\u00e1n pr\u00f3ximos a un m\u00faltiplo de 6. Por   ejemplo, <\/li>\n<\/ul>\n<pre lang=\"text\">\n     primosGemelosNoProximosAmultiplosDe6 50              == [(3,5)]\n     length (primosGemelosNoProximosAmultiplosDe6 (10^9)) == 1\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nprimosGemelos :: Integer -> [(Integer,Integer)]\nprimosGemelos n = [(x,x+2) | x <- [3,5..n-3], \n                             primo x,\n                             primo (x+2)]\n\nprimo :: Integer -> Bool\nprimo n = divisores n == [1,n]\n\ndivisores :: Integer -> [Integer]\ndivisores n = [x | x <- [1..n], n `mod` x == 0]\n\nproximosAmultiplosDe6 :: (Integer,Integer) -> Bool\nproximosAmultiplosDe6 (x,y) =\n    (x+1) `mod` 6 == 0 && y == 6*n+1\n    where n = (x+1) `div` 6\n\nprimosGemelosNoProximosAmultiplosDe6 :: Integer -> [(Integer,Integer)]\nprimosGemelosNoProximosAmultiplosDe6 n =\n    [p | p <- primosGemelos n,\n         not (proximosAmultiplosDe6 p)]\n\n\n-- Experimentado con primosGemelosNProximosAmultiplosDe6\n--    primosGemelosNoProximosAmultiplosDe6 50    == [(3,5)]\n--    primosGemelosNoProximosAmultiplosDe6 500   == [(3,5)]\n--    primosGemelosNoProximosAmultiplosDe6 5000  == [(3,5)]\n-- se observa que el \u00fanico par de primos gemelos no pr\u00f3ximos a m\u00faltiplos\n-- de 6 es el (3,5). Su demostraci\u00f3n es la siguiente:\n--\n-- Para cualquier n > 3, se tiene que de los tres n\u00fameros n-1, n. n+1\n-- uno es divisible por 2 y alguno es divisible por 3. Si n-1 y n+1 son\n-- primos, entonces el que es divisible por 2 y por 3 es n y, por tanto,\n-- n es divisible por 6 y (n-1,n+1) est\u00e1n pr\u00f3ximos a un m\u00faltiplo de 6.\n\n-- Usando la propiedad tenemos una definici\u00f3n m\u00e1s eficiente\nprimosGemelosNoProximosAmultiplosDe6' :: Integer -> [(Integer,Integer)]\nprimosGemelosNoProximosAmultiplosDe6' n = [(3,5)]\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Un par de n\u00fameros primos (p,q) es un par de n\u00fameros primos gemelos si su distancia de 2; es decir, si q = p+2. Por ejemplo, (17,19) es una par de n\u00fameros primos gemelos. Se dice que un par de n\u00fameros (x,y) est\u00e1 pr\u00f3ximo a un m\u00faltiplo de 6 si es de la forma (6*n-1,6*n+1)&#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":[8,30,89,181],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/1683"}],"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=1683"}],"version-history":[{"count":5,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/1683\/revisions"}],"predecessor-version":[{"id":1719,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/1683\/revisions\/1719"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=1683"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=1683"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=1683"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}