せっかく登録したので何か初記事でも書いておきましょうか。
Twitter 上にはさまざまな数学問題bot(どちゃ楽など)があるのですが、その中でも 【問】bot というのはちょっと際立っていまして、未解決っぽい問題や、これは解けそうになさそうなもの(非解決問題?)とかまで収録されていまして。また、問題のカテゴリも「数学」とは限らなかったりします。
その中の一問から。
【問】「p以下の素数の総和」が素数である素数pを求めよ。
https://twitter.com/toibot/status/1559537798356795392
問題自体は
とりあえず、最初の十数個の素数について調べてみます。
以後、素数の番号(何番目の素数)かを
※ 本当は素数の総和については
1 | 2 | 2 | Yes |
2 | 3 | 5 | Yes |
3 | 5 | 10 | No |
4 | 7 | 17 | Yes |
5 | 11 | 28 | No |
6 | 13 | 41 | Yes |
7 | 17 | 58 | No |
8 | 19 | 77 | No |
9 | 23 | 100 | No |
10 | 29 | 129 | No |
11 | 31 | 160 | No |
12 | 37 | 197 | Yes |
13 | 41 | 238 | No |
14 | 43 | 281 | Yes |
15 | 47 | 328 | No |
16 | 53 | 381 | No |
表を見ておわかりの通り、素数の中では
まぁ、とりあえず
n = 1 # 素数の番号
p = 2 # n番目の素数
sum = 0 # p以下の素数の総和
# とりあえず打ち切るまでの回数を指定
while n < 1000:
sum += p
# 総和が素数であれば n, p, sum を表示する
if isprime(sum):
print(n, p, sum)
n += 1
p = nextprime(p)
ここで isprime(sum) は sum が素数であるか否かを返す関数、nextprime(p) は pを超える最小の素数(pの次の素数)を返すものだと思ってください(以前作った自前のものを使いました)
これの実行結果としては以下の通り。(1000番目の素数まで計算)
この表(縦に長いですね)における、
問題で要求されている答えとしては、2列目の数列となるところでしょう。
それにしても
昔からの某掲示板の匿名表記として有名な「
1 | 2 | 2 |
2 | 3 | 5 |
4 | 7 | 17 |
6 | 13 | 41 |
12 | 37 | 197 |
14 | 43 | 281 |
60 | 281 | 7699 |
64 | 311 | 8893 |
96 | 503 | 22039 |
100 | 541 | 24133 |
102 | 557 | 25237 |
108 | 593 | 28697 |
114 | 619 | 32353 |
122 | 673 | 37561 |
124 | 683 | 38921 |
130 | 733 | 43201 |
132 | 743 | 44683 |
146 | 839 | 55837 |
152 | 881 | 61027 |
158 | 929 | 66463 |
162 | 953 | 70241 |
178 | 1061 | 86453 |
192 | 1163 | 102001 |
198 | 1213 | 109147 |
204 | 1249 | 116533 |
206 | 1277 | 119069 |
208 | 1283 | 121631 |
214 | 1307 | 129419 |
216 | 1321 | 132059 |
296 | 1949 | 263171 |
308 | 2029 | 287137 |
326 | 2161 | 325019 |
328 | 2203 | 329401 |
330 | 2213 | 333821 |
332 | 2237 | 338279 |
334 | 2243 | 342761 |
342 | 2297 | 360979 |
350 | 2357 | 379667 |
356 | 2393 | 393961 |
358 | 2411 | 398771 |
426 | 2957 | 581921 |
446 | 3137 | 642869 |
458 | 3251 | 681257 |
460 | 3257 | 687767 |
464 | 3301 | 700897 |
480 | 3413 | 754573 |
484 | 3461 | 768373 |
488 | 3491 | 782263 |
512 | 3671 | 868151 |
530 | 3821 | 935507 |
536 | 3863 | 958577 |
548 | 3947 | 1005551 |
568 | 4129 | 1086557 |
620 | 4583 | 1313041 |
630 | 4657 | 1359329 |
676 | 5051 | 1583293 |
680 | 5087 | 1603597 |
696 | 5233 | 1686239 |
708 | 5351 | 1749833 |
734 | 5563 | 1891889 |
762 | 5807 | 2051167 |
768 | 5849 | 2086159 |
776 | 5897 | 2133121 |
780 | 5939 | 2156813 |
784 | 6007 | 2180741 |
808 | 6211 | 2327399 |
814 | 6263 | 2364833 |
820 | 6301 | 2402537 |
836 | 6427 | 2504323 |
844 | 6529 | 2556187 |
848 | 6563 | 2582401 |
852 | 6581 | 2608699 |
926 | 7243 | 3120833 |
942 | 7433 | 3238237 |
984 | 7757 | 3557303 |
992 | 7853 | 3619807 |