三角数、四角数、五角数、...と呼ばれる数値があります。 三角数ならば、正三角形の形に点を並べたときにそこに並ぶ点の総数の数です。 詳しくはwikipediaなどをどうぞ。 三角数の場合、具体的には1,3,6,10,15,21,...と続きます。 これは1からnまでの自然数の和に等しくなります。 そして、この三角数ですが、 ある自然数xが三角数かを判定するための判定法が存在します。 具体的には三角数の場合だとn=(√(8x+1)-1)/において、 xに値を代入し、nが自然数になった場合 それは三角数だと判定できます。 この項では、一般のn角数(多角数)についての判定式を maximaで計算してみようというのがテーマです。 以下プログラム例えば四角数は正方形に点を並べた数、 つまり平方数ですので √nでチェック出来ることがわかります。n角数の判定
/* 3角数の場合 */ poly(n,x):=((n-2)*x^2-(n-4)*x)/2; s:solve(poly(3,x)-n=0,x); max(rhs(s[1]),rhs(s[2])); /* 上記をまとめたコード */ polyJudge(k):= block([s:solve(((k-2)*x^2-(k-4)*x)/2-n=0,x)],return(max(rhs(s[1]),rhs(s[2])))); /* n角数について計算する */ for i:3 thru 10 do print(polyJudge(i));done;