新しく発言する EXIT インデックスへ
改良版・・・!?

  改良版・・・!?2003/06/24 23:24:38 
  改良版って...もとのプログラムは!? 青木太一 2003/06/25 11:09:26 

  改良版・・・!?2003/06/24 23:24:38  ツリーへ

改良版・・・!? 返事を書く
2003/06/24 23:24:38
「2から最大値mまでの数の中で完全数だけを表示する」というプログラムの改良版はどういうプログラムでしょうか…。どなたかこの答えとそこまでの考察をおしえてください。よろしくお願い致します。

  改良版って...もとのプログラムは!? 青木太一 2003/06/25 11:09:26  ツリーへ

Re: 改良版・・・!? 返事を書く
青木太一 2003/06/25 11:09:26
改良版って...もとのプログラムは!?

!2からmまでの完全数(その数の(その数自身を除いた)約数の総和がその数に等しい数字)
!を求めるプログラムとその改良版(高速化)

LET m=10000

!/////////////// 素直なプログラム ///////////
!プログラムはわかりやすいが、計算に時間がかかる。
LET t=time
for n=2 to m
LET sum=0
for i=1 to n-1
if mod(n,i)=0 then LET sum=sum+i
next i
if sum=n then print n
next n
print "素直なプログラムでは";time-t;"秒かかりました"


!////////// 処理を高速化したプログラム /////////////
!どうしてこのようにすると改良なのかの考察は任せます
!「素直なプログラム」より高速だけど、プログラムが複雑
LET t=time
for n=2 to m
LET sum=1
for i=2 to sqr(n)
if mod(n,i)=0 then
if i=sqr(n) THEN
LET sum=sum+i
else
LET sum=sum+i+n/i
end if
end if
next i
if sum=n then print n
next n
print "計算を高速化したプログラムでは";time-t;"秒かかりました"

END

実行結果(一例)
6
28
496
8128
素直なプログラムでは 102.88 秒かかりました
6
28
496
8128
計算を高速化したプログラムでは 1.5 秒かかりました


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。