c2ae98e89504ab3fb94179eb15eb2116b9e5c502
[project-euler.git] / euler50.ipynb
1 {
2 "cells": [
3 {
4 "cell_type": "code",
5 "execution_count": 12,
6 "metadata": {
7 "collapsed": false,
8 "scrolled": true
9 },
10 "outputs": [
11 {
12 "data": {
13 "text/plain": [
14 "104743"
15 ]
16 },
17 "execution_count": 12,
18 "metadata": {},
19 "output_type": "execute_result"
20 }
21 ],
22 "source": [
23 "load 'primes.rb'\n",
24 "$primes = Primes.instance\n",
25 "$primes[10000] # returns the 10,001st prime"
26 ]
27 },
28 {
29 "cell_type": "code",
30 "execution_count": 13,
31 "metadata": {
32 "collapsed": false
33 },
34 "outputs": [
35 {
36 "data": {
37 "text/plain": [
38 "[2, 3, 5]"
39 ]
40 },
41 "execution_count": 13,
42 "metadata": {},
43 "output_type": "execute_result"
44 }
45 ],
46 "source": [
47 "(0...(0+3)).map{|i| $primes[i]}"
48 ]
49 },
50 {
51 "cell_type": "code",
52 "execution_count": 17,
53 "metadata": {
54 "collapsed": false
55 },
56 "outputs": [
57 {
58 "data": {
59 "text/plain": [
60 ":prime_slice"
61 ]
62 },
63 "execution_count": 17,
64 "metadata": {},
65 "output_type": "execute_result"
66 }
67 ],
68 "source": [
69 "def prime_slice(start, len)\n",
70 " (start...(start + len)).map{|i| $primes[i]}\n",
71 "end"
72 ]
73 },
74 {
75 "cell_type": "code",
76 "execution_count": 18,
77 "metadata": {
78 "collapsed": false
79 },
80 "outputs": [
81 {
82 "data": {
83 "text/plain": [
84 ":sum_primes"
85 ]
86 },
87 "execution_count": 18,
88 "metadata": {},
89 "output_type": "execute_result"
90 }
91 ],
92 "source": [
93 "def sum_primes(start, len)\n",
94 " prime_slice(start, len).sum\n",
95 "end"
96 ]
97 },
98 {
99 "cell_type": "code",
100 "execution_count": 20,
101 "metadata": {
102 "collapsed": false
103 },
104 "outputs": [
105 {
106 "data": {
107 "text/plain": [
108 "[2, 3, 5, 7, 11]"
109 ]
110 },
111 "execution_count": 20,
112 "metadata": {},
113 "output_type": "execute_result"
114 }
115 ],
116 "source": [
117 "prime_slice(0, 5)"
118 ]
119 },
120 {
121 "cell_type": "code",
122 "execution_count": 19,
123 "metadata": {
124 "collapsed": false
125 },
126 "outputs": [
127 {
128 "data": {
129 "text/plain": [
130 "28"
131 ]
132 },
133 "execution_count": 19,
134 "metadata": {},
135 "output_type": "execute_result"
136 }
137 ],
138 "source": [
139 "sum_primes(0, 5)"
140 ]
141 },
142 {
143 "cell_type": "code",
144 "execution_count": 30,
145 "metadata": {
146 "collapsed": false,
147 "scrolled": true
148 },
149 "outputs": [
150 {
151 "name": "stdout",
152 "output_type": "stream",
153 "text": [
154 "0 - 2 : 5\n",
155 "0 - 4 : 17\n",
156 "0 - 6 : 41\n",
157 "0 - 12 : 197\n",
158 "0 - 14 : 281\n",
159 "0 - 60 : 7699\n",
160 "0 - 64 : 8893\n",
161 "0 - 96 : 22039\n",
162 "0 - 100 : 24133\n",
163 "0 - 102 : 25237\n",
164 "0 - 108 : 28697\n",
165 "0 - 114 : 32353\n",
166 "0 - 122 : 37561\n",
167 "0 - 124 : 38921\n",
168 "0 - 130 : 43201\n",
169 "0 - 132 : 44683\n",
170 "0 - 146 : 55837\n",
171 "0 - 152 : 61027\n",
172 "0 - 158 : 66463\n",
173 "0 - 162 : 70241\n",
174 "0 - 178 : 86453\n",
175 "0 - 192 : 102001\n",
176 "0 - 198 : 109147\n",
177 "0 - 204 : 116533\n",
178 "0 - 206 : 119069\n",
179 "0 - 208 : 121631\n",
180 "0 - 214 : 129419\n",
181 "0 - 216 : 132059\n",
182 "0 - 296 : 263171\n",
183 "0 - 308 : 287137\n",
184 "0 - 326 : 325019\n",
185 "0 - 328 : 329401\n",
186 "0 - 330 : 333821\n",
187 "0 - 332 : 338279\n",
188 "0 - 334 : 342761\n",
189 "0 - 342 : 360979\n",
190 "0 - 350 : 379667\n",
191 "0 - 356 : 393961\n",
192 "0 - 358 : 398771\n",
193 "0 - 426 : 581921\n",
194 "0 - 446 : 642869\n",
195 "0 - 458 : 681257\n",
196 "0 - 460 : 687767\n",
197 "0 - 464 : 700897\n",
198 "0 - 480 : 754573\n",
199 "0 - 484 : 768373\n",
200 "0 - 488 : 782263\n",
201 "0 - 512 : 868151\n",
202 "0 - 530 : 935507\n",
203 "0 - 536 : 958577\n",
204 "2 - 537 : 970219\n",
205 "2 - 539 : 978037\n",
206 "3 - 543 : 997651\n"
207 ]
208 },
209 {
210 "data": {
211 "text/plain": [
212 "[3, 543, 997651]"
213 ]
214 },
215 "execution_count": 30,
216 "metadata": {},
217 "output_type": "execute_result"
218 }
219 ],
220 "source": [
221 "sum_limit = 10**6\n",
222 "\n",
223 "start = 0\n",
224 "best_start = 0\n",
225 "best_length = 1\n",
226 "while primes[start] <= sum_limit\n",
227 " # puts start\n",
228 " length = 1\n",
229 " sp = sum_primes(start, length)\n",
230 " while sp <= sum_limit\n",
231 " if sp.prime? && length > best_length\n",
232 " best_start = start\n",
233 " best_length = length\n",
234 " # puts \"#{start} - #{length} : #{sum_primes(start, length)}\"\n",
235 " end\n",
236 " length += 1\n",
237 " sp = sum_primes(start, length)\n",
238 " end\n",
239 " start += 1\n",
240 "end\n",
241 "[best_start, best_length, sum_primes(best_start, best_length)]"
242 ]
243 },
244 {
245 "cell_type": "code",
246 "execution_count": null,
247 "metadata": {
248 "collapsed": true
249 },
250 "outputs": [],
251 "source": []
252 }
253 ],
254 "metadata": {
255 "kernelspec": {
256 "display_name": "Ruby 2.4.0",
257 "language": "ruby",
258 "name": "ruby"
259 },
260 "language_info": {
261 "file_extension": ".rb",
262 "mimetype": "application/x-ruby",
263 "name": "ruby",
264 "version": "2.4.0"
265 }
266 },
267 "nbformat": 4,
268 "nbformat_minor": 0
269 }