{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "104743" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "load 'primes.rb'\n", "$primes = Primes.instance\n", "$primes[10000] # returns the 10,001st prime" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[2, 3, 5]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(0...(0+3)).map{|i| $primes[i]}" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ":prime_slice" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def prime_slice(start, len)\n", " (start...(start + len)).map{|i| $primes[i]}\n", "end" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ":sum_primes" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def sum_primes(start, len)\n", " prime_slice(start, len).sum\n", "end" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[2, 3, 5, 7, 11]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prime_slice(0, 5)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "28" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum_primes(0, 5)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "[3, 543, 997651]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum_limit = 10**6\n", "\n", "start = 0\n", "best_start = 0\n", "best_length = 1\n", "while $primes[start] <= sum_limit\n", " # puts start\n", " length = 1\n", " sp = sum_primes(start, length)\n", " while sp <= sum_limit\n", " if sp.prime? && length > best_length\n", " best_start = start\n", " best_length = length\n", " # puts \"#{start} - #{length} : #{sum_primes(start, length)}\"\n", " end\n", " length += 1\n", " sp = sum_primes(start, length)\n", " end\n", " start += 1\n", "end\n", "[best_start, best_length, sum_primes(best_start, best_length)]" ] }, { "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 }