PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 183 / 分割した積の最大値

正整数 N に対して P=(N/k)^k (k >=2) の最大値を M(N) であらわす。

 M(11)=\left(\dfrac{11}{4}\right)^4=\dfrac{14641}{256}=57.19140625

M(N)が無限小数のとき D(N)=N とし,M(N) が有限小数のとき D(N)=-N とする。
5 ≦ N ≦ 100の とき,ΣD(N) = 2438

5 ≦ N ≦ 10000 のとき,ΣD(N) を求めよ。

本家:Problem 183 - Project Euler
日本語訳:Problem 183 - PukiWiki


受験数学っぽい問題でした。f(x)=(N/x)^x は x=N/e で最大になります。
k1=floor(N/e), k2=k1+1 として

 M(N)=\max\{f(k_1),\, f(k_2)\}

対応する k を kk とおきます。N/kk の分母が2と5以外の素因数をもつかどうか調べれば D(N) を決定できます。