Weekend Mathematics問題/問題31

31.素数の問題

  1. 次のような、数字を逆の順序に並べた無限につづく数列があります。
    この中にある素数をすべてあげてください。

    9,98,987,9876,・・・,987654321,9876543219, 98765432198,・・・


  2. 等差数列をなす3つの整数で、全部かけたとき(積の意味です)の答えが素数となるようなものを求めてください。





問題の出典


悩め!パスラ−(挑戦その1)

アンジェラ・フォックス・ダン編

啓学出版






答えと解説












答えと解説

問題1


解答・その1

(ペンネ−ム:さだやん)

一の位が偶数のものは2の倍数ですから素数ではありません。
残りのうち,一の位が5のものは5の倍数ですから素数ではありません。
その残りの下の位は 9,987,9876543,987654321,…… の繰り返しですが,いずれも,3の倍数で,上の位 987654321×(10の累乗)もまた 3の倍数です。
以上により, あるものは,2や5の,他のものは3の倍数になり,素数はなし。 
           答え 解なし

感想
ぱっと見て,「これは私には無理」と思いました。 無限に続くとなると一般解になりそうで私の能力を超えると思ったのです。 それで,一番小さい素数を見つけて,「努力賞」をねらうというか誠意を見せよう?と 思いました。 ところが,繰り替えし部分は3の倍数になること,下の位は2か3か5の倍数になり0個 とわかりました。 「取りあえず,やろうとしてみる」のがよかったと思います。 実際,これで,もし, 一番小さい素数が見つかったとしたら,私には手に負えなかったでしょう。



解答・その2

(ペンネ−ム:Chee)

[解答]
まずは、2つばかり補題を (当たり前で(?)補題というのもおこがましいので、証明は後で)。

補題1)
3つの連続する数(とりあえず1〜9に限定)から作られる数は3で割り切れる。 たとえば、987や654など。

補題2)
3で割り切れる数の後ろに、3で割り切れる数を続けて作った数は、 3で割り切れる。 たとえば、3の後ろに9を続けてつくった39など。

まず、9(3で割れる)も98(2で割れる)も素数でないので、 987以降の数列について考えます。 つまり、3桁以上を想定します。
ここで、与えられた数列のそれぞれの数を、 「上の桁から3桁ずつ区切り、あまった下の桁の数」で分類すると、 数列の規則(9〜1を繰り返し使う)より、次の6つのグループに分かれます:
最後の桁が、9,98,6,65,3,32 ・・・これを「最後の桁」と呼 ぶことにします。
さて、補題1より、最初の3桁は、3で割れますし、 以降の3桁づつ区切った分もそれぞれ3で割れるので、 補題2より、結局「最後の桁」が3で割れるかどうかで、 その数が3で割れるかどうかが確定します。 最後の桁が3で割れるのは、9,6,3の3つのグループです。
また、最後の桁がないもの(3桁ずつ区切りきれたもの)は、補題1と補題2より、 3で割り切れます。
結局、最後の桁が98,65,32のもの以外の(数列中の) すべての数は3で割り切れてしまいます。
残った3つのグループは、下1桁が偶数と5なので、 いずれも2か5で割り切れてしまいます。
結果、この中に素数はありません。
# あれ?

[補題1の証明]
3桁の数を「ABC」と書いたとします。
「ABC」 = A×100+B×10+C = A×99+B×9+(A+B+C) = 3×(A×33+B×3)+(A+B+C)
A,B,Cのうち最小の数をaとすると、のこりの2つはそれぞれ、 a+1,a+2 となり、
A+B+C = a+(a+1)+(a+2) = a×3+3 = 3×(a+1)
結局、「ABC」 = 3×(A×33+B×3)+3×(a+1) = 3×(A×33+B×3+a+1) となり、3で割り 切れる。

[補題2の証明]
くっつける前の数をAとし、くっつけた数をBとして、Bの桁数をkとすると、 作った数は、
A×10k + B
AもBも3で割り切れるので、それぞれ 3×a, 3×b とおくと、
A×10k + B = 3×a×10k + 3×b = 3×(a×10k+b)となり、3でわりきれる。

# 小学校のころ、

ってのを教わった気がします。それをふと思い出してみました...




解答・その3

(ペンネ−ム:浜田 明巳)
連続する3n(nは自然数)個の整数の和は3の倍数である. したがって素数の候補として,

  1. 各位の数の和が3の倍数でない
  2. 末位が奇数である
  3. 末位が5でない
数を選び,その中から素数を見つければよい.
987654321は3の倍数であるから,下の桁の

98
987
9876
98765
987654
9876543
98765432
の中から上記の1,2,3を満たすものを選べばよい.
しかし満たすものは存在しない.故にこの数列内に素数は存在しない.

これは1000000桁以下の数列内に素数の候補 (=奇数であり、3の倍数でなく、5の倍数でない数) があるかどうかをチェックするプログラムです。

Sub sosuu()
    Dim max, a(1000000) As Long: max = 1000000
    Dim wa, kosuu, j, jj As Integer: wa = 0: kosuu = 0
    For j = 1 To max
     a(j) = 9 - ((j - 1) Mod 9): wa = (wa + a(j)) Mod 3
     If wa > 0 And a(j) Mod 2 = 1 And a(j) <> 5 Then
      kosuu = kosuu + 1
      For jj = 1 To j: Selection.TypeText Text:=a(jj): Next
      Selection.TypeParagraph
     End If
    Next
    If kosuu = 0 Then
     Selection.TypeText Text:=Str$(max) + "桁以下の数には,素数はありませんでした."
     Selection.TypeParagraph
    End If
End Sub
実行した結果、 「 1000000桁以下の数には,素数はありませんでした.」が表示されました。



解答・その4

(ペンネ−ム:ちゃめ)

(答え) 素数は存在しない。

(T)2は数列のメンバーではない。

(U)1の位が2,4,6,8である、 数列のメンバーは2の倍数であることにより、 1の位が5であるメンバーは5の倍数であることにより、それぞれ素 数ではない。

(V)1の位が、1,3,7,9の場合を考える。
「ある自然数が3の倍数である必要十分条件は その数の各位の数字の和が3の倍数である」ことは既知とする。

  1. 第9項までに現れる、1の位が1,3,7,9である数の集合をAとする。
        A={9,987,9876543,987654321}。 
    Aの要素について3の倍数かどうかをチェックする。
    9=9=3×3
    9+8+7=24=3×8
    9+8+7+6+5+4+3=42=3×14
    9+8+7+6+5+4+3+2+1=45=3×15
     よって、Aの要素はすべて3の倍数なので素数ではない。
  2. 第10項以降の、1の位が1,3,7,9である数は、 987654321を有限回(n回とする)繰り返した後に 集合Aのいずれかの要素が一つ付くという数字の並びなっている。
    従って、その各位の数字の和は、45×n+(3の倍数)となり、 それ自身3の倍数である。
    よって、第10項以降の、1の位が1,3,7,9である数はすべて3の倍 数なので素数ではない。

以上、(T)〜(V)により問題の数列には素数は存在しない。



解答・その5

(ペンネ−ム:ものもの)

偶数および1の位が5の自然数は素数でないことは明らか、 よって、1の位が1、3、7、9の場合について考える。