※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

Problem 6 「二乗和の差」 †

最初の10個の自然数について, その二乗の和は,
1^2 + 2^2 + ... + 10^2 = 385
最初の10個の自然数について, その和の二乗は,
(1 + 2 + ... + 10)^2 = 3025
これらの数の差は 3025 - 385 = 2640 となる.
同様にして, 最初の100個の自然数について二乗の和と和の二乗の差を求めよ.

解法
数学の公式を使えば一行で答えが出ますが。
せっかくプログラム言語があるのだし逐次的に求めてみましょう。
再帰で足す数Nを1ずつ足す数を増加させながら2乗の和と普通の和を足して、最後に普通の和を2乗してその差分をとれば答えです。


calc(Stop,Stop,Sum1,Sum2,Ans):-!,
	Ans is Sum1*Sum1-Sum2.

calc(N,Stop,Sum1,Sum2,Result):-
	Sum11 is Sum1+N,
	Sum22 is Sum2+N*N,
 	N1 is N+1,
	calc(N1,Stop,Sum11,Sum22,Result).

main6:-calc(1,101,0,0,Ans),write(Ans).