読者です 読者をやめる 読者になる 読者になる

PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 23 / 非過剰数和

完全数とはその数の真の約数の和がそれ自身と一致する数のことである。たとえば28の真の約数の和は1+2+4+7+14=28であるので,28は完全数である。

真の約数の和がその数よりも少ないものを不足数といい,真の約数の和がその数よりも大きいものを過剰数と呼ぶ。

12は1+2+3+4+6=16となるので最小の過剰数である。よって2つの過剰数の和で書ける最少の数は24である。数学的な解析により,28123より大きい任意の整数は2つの過剰数の和で書けることが知られている。2つの過剰数の和で表せない最大の数がこの上限よりも小さいことは分かっているのだが,この上限を減らすことができていない。

2つの過剰数の和で書き表せない正の整数の総和を求めよ。

Problem 23 - Project Euler


2つの過剰数の和で表せる数の集合を作って,その総和を1~28123の総和から引けばいいはず。

地道な方法で解いてしまった……

  • 過剰数のリストを作る(myList1)
  • myList1に属する2数の和のリストを作る(myList2)
  • 総和の引き算

myList2は作り方,書き方とも改善の余地があると思いますが,今の私にできるのはここまでです。