{"id":7136,"date":"2022-07-15T06:00:52","date_gmt":"2022-07-15T04:00:52","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=7136"},"modified":"2022-07-09T17:44:29","modified_gmt":"2022-07-09T15:44:29","slug":"primos-cubanos","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/primos-cubanos\/","title":{"rendered":"Primos cubanos"},"content":{"rendered":"<p>Un <a href=\"http:\/\/bit.ly\/1jPy5QZ\">primo cubano<\/a> es un n\u00famero primo que se puede escribir como diferencia de dos cubos consecutivos. Por ejemplo, el 61 es un primo cubano porque es primo y 61 = 5\u00b3-4\u00b3.<\/p>\n<p>Definir la sucesi\u00f3n<\/p>\n<pre lang=\"text\">\n   cubanos :: [Integer]\n<\/pre>\n<p>tal que sus elementos son los n\u00fameros cubanos. Por ejemplo,<\/p>\n<pre lang=\"text\">\n   \u03bb> take 15 cubanos\n   [7,19,37,61,127,271,331,397,547,631,919,1657,1801,1951,2269]\n<\/pre>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nimport Data.Numbers.Primes (isPrime)\nimport Test.QuickCheck \n\n-- 1\u00aa soluci\u00f3n\n-- ===========\n\ncubanos1 :: [Integer]\ncubanos1 = filter isPrime (zipWith (-) (tail cubos) cubos) \n\n-- cubos es la lista de los cubos. Por ejemplo,\n--    \u03bb> take 10 cubos\n--    [1,8,27,64,125,216,343,512,729,1000]\ncubos :: [Integer]\ncubos = map (^3) [1..]\n\n-- 2\u00aa soluci\u00f3n\n-- ===========\n\ncubanos2 :: [Integer]\ncubanos2 = filter isPrime [(x+1)^3 - x^3 | x <- [1..]]\n\n-- 3\u00aa soluci\u00f3n\n-- ===========\n\ncubanos3 :: [Integer]\ncubanos3 = filter isPrime [3*x^2 + 3*x + 1 | x <- [1..]]\n\n-- Comprobaci\u00f3n de equivalencia\n-- ============================\n\n-- La propiedad es\nprop_cubanos :: NonNegative Int -> Bool\nprop_cubanos (NonNegative n) =\n  all (== cubanos1 !! n)\n      [cubanos2 !! n,\n       cubanos3 !! n]\n\n-- La comprobaci\u00f3n es\n--    \u03bb> quickCheck prop_cubanos\n--    +++ OK, passed 100 tests.\n\n-- Comparaci\u00f3n de eficiencia\n-- =========================\n\n-- La comparaci\u00f3n es\n--    \u03bb> cubanos1 !! 3000\n--    795066361\n--    (4.21 secs, 16,953,612,192 bytes)\n--    \u03bb> cubanos2 !! 3000\n--    795066361\n--    (4.27 secs, 16,962,597,288 bytes)\n--    \u03bb> cubanos3 !! 3000\n--    795066361\n--    (4.29 secs, 16,956,085,672 bytes)\n<\/pre>\n<p>El c\u00f3digo se encuentra en <a href=\"https:\/\/github.com\/jaalonso\/Exercitium\/blob\/main\/src\/Primos_cubanos.hs\">GitHub<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un primo cubano es un n\u00famero primo que se puede escribir como diferencia de dos cubos consecutivos. Por ejemplo, el 61 es un primo cubano porque es primo y 61 = 5\u00b3-4\u00b3. Definir la sucesi\u00f3n cubanos :: [Integer] tal que sus elementos son los n\u00fameros cubanos. Por ejemplo, \u03bb> take 15 cubanos [7,19,37,61,127,271,331,397,547,631,919,1657,1801,1951,2269] Soluciones import&#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":[2],"tags":[521],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/7136"}],"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=7136"}],"version-history":[{"count":1,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/7136\/revisions"}],"predecessor-version":[{"id":7137,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/7136\/revisions\/7137"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=7136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=7136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=7136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}