Problem 1
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.
natural number 自然数
10までの3と5の倍数の和は…
3 +5+6+9=23
では…1000までの3と5の倍数の和は…
計算してみましょう。Excelを使うと解けますよ。
~考え方~
(3の倍数の総和)+(5の倍数の総和)-(3と5の公倍数の総和)=(答え)
プログラミングしてみると…
求める解をTOTALとします。
Set TOTAL to 0;
← ここの意味:そのTOTALの初期値を0とします。
for every number NUM from 1 to 999 do
← ここの意味:1~999まで次の処理をしなさい。
if NUM mod 3 = 0 or if NUM mod 5 = 0 then
add NUM to TOTAL;
← ここの意味:3または5で割り切れたら、その数を加算して、TOTALに入れます。
ただし、3でも5でも割り切れたら、加算してはいけません。
『or』の意味はそういう意味なのです。論理学を学べばすぐわかります。
もっと優しく言えば、上記の考え方の太字にある通り、3と5の公倍数は加算しなければいいのです。
別な言い方をすれば、15の倍数は加算できないということです。ダブってしまいますからね。
output TOTAL
このProject Eulerは、プログラムを組む上で、どのようなアルゴリズム(手順、考え方)で
より速く計算をすることができるかが大切なのです。
右のように、力まかせに解くこともできます。
① 基本に忠実に解くこと。
② 高校生の知識を使って解いてみること。
③ 大学生の知識を使って解いてみること。
そんな風にこのProject Eulerを利用してみると、面白いですよ。
では、実際に計算してみましょう。
3と5の公倍数 | |||
倍数 | 3 | 5 | 15 |
1 | 3 | 5 | 15 |
2 | 6 | 10 | 30 |
3 | 9 | 15 | 45 |
4 | 12 | 20 | 60 |
5 | 15 | 25 | 75 |
6 | 18 | 30 | 90 |
7 | 21 | 35 | 105 |
8 | 24 | 40 | 120 |
9 | 27 | 45 | 135 |
10 | 30 | 50 | 150 |
11 | 33 | 55 | 165 |
12 | 36 | 60 | 180 |
13 | 39 | 65 | 195 |
14 | 42 | 70 | 210 |
15 | 45 | 75 | 225 |
16 | 48 | 80 | 240 |
17 | 51 | 85 | 255 |
18 | 54 | 90 | 270 |
19 | 57 | 95 | 285 |
20 | 60 | 100 | 300 |
21 | 63 | 105 | 315 |
22 | 66 | 110 | 330 |
23 | 69 | 115 | 345 |
24 | 72 | 120 | 360 |
25 | 75 | 125 | 375 |
26 | 78 | 130 | 390 |
27 | 81 | 135 | 405 |
28 | 84 | 140 | 420 |
29 | 87 | 145 | 435 |
30 | 90 | 150 | 450 |
31 | 93 | 155 | 465 |
32 | 96 | 160 | 480 |
33 | 99 | 165 | 495 |
34 | 102 | 170 | 510 |
35 | 105 | 175 | 525 |
36 | 108 | 180 | 540 |
37 | 111 | 185 | 555 |
38 | 114 | 190 | 570 |
39 | 117 | 195 | 585 |
40 | 120 | 200 | 600 |
41 | 123 | 205 | 615 |
42 | 126 | 210 | 630 |
43 | 129 | 215 | 645 |
44 | 132 | 220 | 660 |
45 | 135 | 225 | 675 |
46 | 138 | 230 | 690 |
47 | 141 | 235 | 705 |
48 | 144 | 240 | 720 |
49 | 147 | 245 | 735 |
50 | 150 | 250 | 750 |
51 | 153 | 255 | 765 |
52 | 156 | 260 | 780 |
53 | 159 | 265 | 795 |
54 | 162 | 270 | 810 |
55 | 165 | 275 | 825 |
56 | 168 | 280 | 840 |
57 | 171 | 285 | 855 |
58 | 174 | 290 | 870 |
59 | 177 | 295 | 885 |
60 | 180 | 300 | 900 |
61 | 183 | 305 | 915 |
62 | 186 | 310 | 930 |
63 | 189 | 315 | 945 |
64 | 192 | 320 | 960 |
65 | 195 | 325 | 975 |
66 | 198 | 330 | 990 |
67 | 201 | 335 | |
68 | 204 | 340 | |
69 | 207 | 345 | |
70 | 210 | 350 | |
71 | 213 | 355 | |
72 | 216 | 360 | |
73 | 219 | 365 | |
74 | 222 | 370 | |
75 | 225 | 375 | |
76 | 228 | 380 | |
77 | 231 | 385 | |
78 | 234 | 390 | |
79 | 237 | 395 | |
80 | 240 | 400 | |
81 | 243 | 405 | |
82 | 246 | 410 | |
83 | 249 | 415 | |
84 | 252 | 420 | |
85 | 255 | 425 | |
86 | 258 | 430 | |
87 | 261 | 435 | |
88 | 264 | 440 | |
89 | 267 | 445 | |
90 | 270 | 450 | |
91 | 273 | 455 | |
92 | 276 | 460 | |
93 | 279 | 465 | |
94 | 282 | 470 | |
95 | 285 | 475 | |
96 | 288 | 480 | |
97 | 291 | 485 | |
98 | 294 | 490 | |
99 | 297 | 495 | |
100 | 300 | 500 | |
101 | 303 | 505 | |
102 | 306 | 510 | |
103 | 309 | 515 | |
104 | 312 | 520 | |
105 | 315 | 525 | |
106 | 318 | 530 | |
107 | 321 | 535 | |
108 | 324 | 540 | |
109 | 327 | 545 | |
110 | 330 | 550 | |
111 | 333 | 555 | |
112 | 336 | 560 | |
113 | 339 | 565 | |
114 | 342 | 570 | |
115 | 345 | 575 | |
116 | 348 | 580 | |
117 | 351 | 585 | |
118 | 354 | 590 | |
119 | 357 | 595 | |
120 | 360 | 600 | |
121 | 363 | 605 | |
122 | 366 | 610 | |
123 | 369 | 615 | |
124 | 372 | 620 | |
125 | 375 | 625 | |
126 | 378 | 630 | |
127 | 381 | 635 | |
128 | 384 | 640 | |
129 | 387 | 645 | |
130 | 390 | 650 | |
131 | 393 | 655 | |
132 | 396 | 660 | |
133 | 399 | 665 | |
134 | 402 | 670 | |
135 | 405 | 675 | |
136 | 408 | 680 | |
137 | 411 | 685 | |
138 | 414 | 690 | |
139 | 417 | 695 | |
140 | 420 | 700 | |
141 | 423 | 705 | |
142 | 426 | 710 | |
143 | 429 | 715 | |
144 | 432 | 720 | |
145 | 435 | 725 | |
146 | 438 | 730 | |
147 | 441 | 735 | |
148 | 444 | 740 | |
149 | 447 | 745 | |
150 | 450 | 750 | |
151 | 453 | 755 | |
152 | 456 | 760 | |
153 | 459 | 765 | |
154 | 462 | 770 | |
155 | 465 | 775 | |
156 | 468 | 780 | |
157 | 471 | 785 | |
158 | 474 | 790 | |
159 | 477 | 795 | |
160 | 480 | 800 | |
161 | 483 | 805 | |
162 | 486 | 810 | |
163 | 489 | 815 | |
164 | 492 | 820 | |
165 | 495 | 825 | |
166 | 498 | 830 | |
167 | 501 | 835 | |
168 | 504 | 840 | |
169 | 507 | 845 | |
170 | 510 | 850 | |
171 | 513 | 855 | |
172 | 516 | 860 | |
173 | 519 | 865 | |
174 | 522 | 870 | |
175 | 525 | 875 | |
176 | 528 | 880 | |
177 | 531 | 885 | |
178 | 534 | 890 | |
179 | 537 | 895 | |
180 | 540 | 900 | |
181 | 543 | 905 | |
182 | 546 | 910 | |
183 | 549 | 915 | |
184 | 552 | 920 | |
185 | 555 | 925 | |
186 | 558 | 930 | |
187 | 561 | 935 | |
188 | 564 | 940 | |
189 | 567 | 945 | |
190 | 570 | 950 | |
191 | 573 | 955 | |
192 | 576 | 960 | |
193 | 579 | 965 | |
194 | 582 | 970 | |
195 | 585 | 975 | |
196 | 588 | 980 | |
197 | 591 | 985 | |
198 | 594 | 990 | |
199 | 597 | 995 | |
200 | 600 | ||
201 | 603 | ||
202 | 606 | ||
203 | 609 | ||
204 | 612 | ||
205 | 615 | ||
206 | 618 | ||
207 | 621 | ||
208 | 624 | ||
209 | 627 | ||
210 | 630 | ||
211 | 633 | ||
212 | 636 | ||
213 | 639 | ||
214 | 642 | ||
215 | 645 | ||
216 | 648 | ||
217 | 651 | ||
218 | 654 | ||
219 | 657 | ||
220 | 660 | ||
221 | 663 | ||
222 | 666 | ||
223 | 669 | ||
224 | 672 | ||
225 | 675 | ||
226 | 678 | ||
227 | 681 | ||
228 | 684 | ||
229 | 687 | ||
230 | 690 | ||
231 | 693 | ||
232 | 696 | ||
233 | 699 | ||
234 | 702 | ||
235 | 705 | ||
236 | 708 | ||
237 | 711 | ||
238 | 714 | ||
239 | 717 | ||
240 | 720 | ||
241 | 723 | ||
242 | 726 | ||
243 | 729 | ||
244 | 732 | ||
245 | 735 | ||
246 | 738 | ||
247 | 741 | ||
248 | 744 | ||
249 | 747 | ||
250 | 750 | ||
251 | 753 | ||
252 | 756 | ||
253 | 759 | ||
254 | 762 | ||
255 | 765 | ||
256 | 768 | ||
257 | 771 | ||
258 | 774 | ||
259 | 777 | ||
260 | 780 | ||
261 | 783 | ||
262 | 786 | ||
263 | 789 | ||
264 | 792 | ||
265 | 795 | ||
266 | 798 | ||
267 | 801 | ||
268 | 804 | ||
269 | 807 | ||
270 | 810 | ||
271 | 813 | ||
272 | 816 | ||
273 | 819 | ||
274 | 822 | ||
275 | 825 | ||
276 | 828 | ||
277 | 831 | ||
278 | 834 | ||
279 | 837 | ||
280 | 840 | ||
281 | 843 | ||
282 | 846 | ||
283 | 849 | ||
284 | 852 | ||
285 | 855 | ||
286 | 858 | ||
287 | 861 | ||
288 | 864 | ||
289 | 867 | ||
290 | 870 | ||
291 | 873 | ||
292 | 876 | ||
293 | 879 | ||
294 | 882 | ||
295 | 885 | ||
296 | 888 | ||
297 | 891 | ||
298 | 894 | ||
299 | 897 | ||
300 | 900 | ||
301 | 903 | ||
302 | 906 | ||
303 | 909 | ||
304 | 912 | ||
305 | 915 | ||
306 | 918 | ||
307 | 921 | ||
308 | 924 | ||
309 | 927 | ||
310 | 930 | ||
311 | 933 | ||
312 | 936 | ||
313 | 939 | ||
314 | 942 | ||
315 | 945 | ||
316 | 948 | ||
317 | 951 | ||
318 | 954 | ||
319 | 957 | ||
320 | 960 | ||
321 | 963 | ||
322 | 966 | ||
323 | 969 | ||
324 | 972 | ||
325 | 975 | ||
326 | 978 | ||
327 | 981 | ||
328 | 984 | ||
329 | 987 | ||
330 | 990 | ||
331 | 993 | ||
332 | 996 | ||
333 | 999 | ||
Total | 166833 | 99500 | 33165 |
上記の通り、
(3の倍数の総和)+(5の倍数の総和)-(3と5の公倍数の総和)=(答え)
—————