改良版・・・!? 晃 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 秒かかりました |