質問<3557>2007/6/11
次のプログラムはなにをするものか、出力sを数学の総和記号Σを用いて表し、説明せよ。
program test(input,output);
var i,n,s:integer;
bigin
read(n)
s:=0;
i=1;
while i=2*n do
begin
s=s+i*;
i=i+2
end;
writeln('n'=,n,'のときs=',s)
end.
★希望★完全解答★
お便り2007/6/14
from=JUN*2
手持ちのBASICでプログラミングしましたが、お力になれませんでした。 ご質問のプログラムはPascalですよね? でしたら、一度実際にPascalがダウンロードされたPCでプログラミングされることをおすすめします。
お便り2007/6/16
from=JJon.com
タイプミスが多くてこのままでは正常に実行できないです。
while i<=2*n do
begin
s:=s+i;
i:=i+2;
end;
であるなら
求められる値sは 1+3+5+7+...+(2*n-1) となりますから,
s = Σ_(i=1~n) (2×i-1)
お便り2007/6/17
from=亀田馬志
(defun program-test ()
(let (n (s 0) (i 1)) ;初期条件n, s, iを決める
(setq n (read)) ;nに直接入力
(loop ;ループ開始
(or (and (< (* 2 n) i) ;iが2nを超えたら出力表示
(return (format t "n=~Aのときs=~A~%" n s)))
(and (setq s (+ s i)) ;sをs+1に更新、iをi+2に更新
(setq i (+ i 2)))))))
>次のプログラムはなにをするものか
n(直接入力された数)の2乗を返すプログラム
>出力sを数学の総和記号Σを用いて表し、説明せよ。
プログラム上で
s=s+i
と表される部分は、数学的には第k番目の操作を_kと言う添え字で書き換えれば
S_{k+1}=S_{k}+i・・・・・・①
と表される。
ここでk≧1とすれば、iが初項1、公比2の等差数列である事に気をつければ①は
S_{k+1}-S_k=1+2*(k-1)
=2*k-1・・・・・・②
と書き換えることが出来る。
あとは上記の漸化式を解けば良い。