トップページに戻る    次のC#のサンプルへ    前のC#のサンプルへ

Problem229 平方数による4通りの表し方

問題

3600 は特殊な数字である, というのは以下の特徴があるからである.

●3600 = 48の2乗 +    36の2乗
●3600 = 20の2乗 + 2×40の2乗
●3600 = 30の2乗 + 3×30の2乗
●3600 = 45の2乗 + 7×15の2乗

同様に,
82201 =  99の2乗 +   280の2乗
      = 287の2乗 + 2×54の2乗
      = 283の2乗 + 3×54の2乗
      = 197の2乗 + 7×84の2乗
である.

1747年, オイラーはどのような数が平方数の和で表せるか証明した.
我々は以下のような4通りの式で表せる数nに着目する.

●n = a(1)の2乗 +     b(1)の2乗
●n = a(2)の2乗 + 2×(b(2)の2乗)
●n = a(3)の2乗 + 3×(b(3)の2乗)
●n = a(7)の2乗 + 7×(b(7)の2乗)
a(K),b(K)は正整数とする.

100万以下ではこれを満たす整数は75373個ある.
2億以下ではいくつあるか.


ソース



実行結果



解説