{ "cells": [ { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "#" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "load 'array-numbers.rb'\n", "load 'primes.rb'\n", "$primes = Primes.instance" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ":all_rotations" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class Array\n", " def all_rotations\n", " (0...self.length).map {|r| self.rotate(r)}\n", " end\n", "end" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[[1, 2, 3], [2, 3, 1], [3, 1, 2]]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[1,2,3].all_rotations" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[123, 231, 312]" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[1,2,3].all_rotations.map {|n| n.to_i}" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[false, false, false]" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[1,2,3].all_rotations.map {|n| n.to_i}.map {|n| $primes.include? n}" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[true, true]" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "17.to_digits.all_rotations.map {|n| n.to_i}.map {|n| $primes.include? n}" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "false" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[1,2,3].all_rotations.map {|n| n.to_i}.all? {|n| $primes.include? n}" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "17.to_digits.all_rotations.map {|n| n.to_i}.all? {|n| $primes.include? n}" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ":circular_prime?" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class Integer\n", " \n", " def pl\n", " @@primes.primes.length\n", " end\n", " \n", " def circular_prime?\n", " self.to_digits.all_rotations.map {|n| n.to_i}.all? {|n| @@primes.include? n} if self.prime?\n", " end\n", "end" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1229" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "0.pl" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, 97]" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(2..100).select {|n| n.circular_prime?}" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, 97]" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(2..100).select {|n| n.circular_prime?}" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "13" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(2..100).select {|n| n.circular_prime?}.length" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# ps = $primes.take_while {|i| i <= 10**6}\n", "# ps.length" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# (2..10**4).select {|n| n.circular_prime?}" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Time elapsed 0.054970036 seconds, going from 1229 to 1230 primes cached\n" ] }, { "data": { "text/plain": [ "33" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pl0 = 0.pl\n", "beginning_time = Time.now\n", "cps = (2..10**4).select {|n| n.circular_prime?}\n", "end_time = Time.now\n", "pl1 = 0.pl\n", "puts \"Time elapsed #{(end_time - beginning_time)} seconds, going from #{pl0} to #{pl1} primes cached\"\n", "cps.length" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Time elapsed 0.067191288 seconds, going from 1230 to 1230 primes cached\n" ] }, { "data": { "text/plain": [ "33" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pl0 = 0.pl\n", "beginning_time = Time.now\n", "cps = (2..10**4).select {|n| n.circular_prime?}\n", "end_time = Time.now\n", "pl1 = 0.pl\n", "puts \"Time elapsed #{(end_time - beginning_time)} seconds, going from #{pl0} to #{pl1} primes cached\"\n", "cps.length" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Time elapsed 0.448493896 seconds, going from 1230 to 9593 primes cached\n" ] }, { "data": { "text/plain": [ "43" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pl0 = 0.pl\n", "beginning_time = Time.now\n", "cps = (2..10**5).select {|n| n.circular_prime?}\n", "end_time = Time.now\n", "pl1 = 0.pl\n", "puts \"Time elapsed #{(end_time - beginning_time)} seconds, going from #{pl0} to #{pl1} primes cached\"\n", "cps.length" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Time elapsed 0.274737814 seconds, going from 9593 to 9593 primes cached\n" ] }, { "data": { "text/plain": [ "43" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pl0 = 0.pl\n", "beginning_time = Time.now\n", "cps = (2..10**5).select {|n| n.circular_prime?}\n", "end_time = Time.now\n", "pl1 = 0.pl\n", "puts \"Time elapsed #{(end_time - beginning_time)} seconds, going from #{pl0} to #{pl1} primes cached\"\n", "cps.length" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Time elapsed 10.457163873 seconds, going from 9593 to 78499 primes cached\n" ] }, { "data": { "text/plain": [ "55" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pl0 = 0.pl\n", "beginning_time = Time.now\n", "cps = (2..10**6).select {|n| n.circular_prime?}\n", "end_time = Time.now\n", "pl1 = 0.pl\n", "puts \"Time elapsed #{(end_time - beginning_time)} seconds, going from #{pl0} to #{pl1} primes cached\"\n", "cps.length" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Time elapsed 2.884361875 seconds, going from 78499 to 78499 primes cached\n" ] }, { "data": { "text/plain": [ "[2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, 97, 113, 131, 197, 199, 311, 337, 373, 719, 733, 919, 971, 991, 1193, 1931, 3119, 3779, 7793, 7937, 9311, 9377, 11939, 19391, 19937, 37199, 39119, 71993, 91193, 93719, 93911, 99371, 193939, 199933, 319993, 331999, 391939, 393919, 919393, 933199, 939193, 939391, 993319, 999331]" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pl0 = 0.pl\n", "beginning_time = Time.now\n", "cps = (2..10**6).select {|n| n.circular_prime?}\n", "end_time = Time.now\n", "pl1 = 0.pl\n", "puts \"Time elapsed #{(end_time - beginning_time)} seconds, going from #{pl0} to #{pl1} primes cached\"\n", "cps" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Ruby 2.4.0", "language": "ruby", "name": "ruby" }, "language_info": { "file_extension": ".rb", "mimetype": "application/x-ruby", "name": "ruby", "version": "2.4.0" } }, "nbformat": 4, "nbformat_minor": 0 }