読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

(3) という形をした数は素数である?

Fermatの最終定理で有名はFermatは、以下のような予想をしたそうです。

という形をした数は素数である。


Maximaで調べてみましょう。

prime_flag : true$
for n : 0 while prime_flag = true do block([e],
  e : 2^(2^n) + 1,
  if primep(e)
  then print("(n=", n, ") ", e, " is prime.")
  else (
    print(e, " is ", factor(e)),
    prime_flag : false)
  )$


Fermatの予想は間違っていたことがわかりました。最後の反例はEulerが見つけたそうです。どうやって計算したんでしょうね。

昔の数学者は大変な計算をこなし、その先を想像して予想を立てたかと思いますが、今は下手な予想を立てても、計算機ですぐ反例が見つかってしまう。もしかして、ホラが吹けない夢のない時代ですか?(笑)


せっかくなのでもう少し先がどうなっているか計算してみましょう。

prime_flag : true$
for n : 6 thru 8 do block([e],
  e : 2^(2^n) + 1,
  if primep(e)
  then print("(n=", n, ") ", e, " is prime.")
  else (
    print(e, " is ", factor(e)),
    prime_flag : false)
  )$


4つとも2つの素数の積になります。
さて、nがいくつの時まで、2つの素数の積で表すことができるのでしょうか?