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の公倍数の総和)=(答え)
—————