10未満の自然数のうち, 3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4つがあり, これらの合計は 23 になる.
同じようにして, 1000 未満の 3 か 5 の倍数になっている数字の合計を求めよ.
同じようにして, 1000 未満の 3 か 5 の倍数になっている数字の合計を求めよ.
次の方針でこの問題を解きます.
- 1から999までの整数のリストを作ります.
- 作った整数のリストから3の倍数か5の倍数になっている整数を取り出します.
- 取り出した整数の和を求めます.
整数のリストを作るために, SRFI 1のiotaを使います.
また, 3の倍数か5の倍数かを判定する手続きを定義します.
(require srfi/1) (define (div-3-or-5? n) (or (= 0 (remainder n 3)) (= 0 (remainder n 5))))
10未満の範囲で計算してみます.
ようこそ DrRacket, バージョン 5.3.3 [3m]. 言語: Pretty Big; memory limit: 128 MB. > (iota 9 1) (1 2 3 4 5 6 7 8 9) > (filter div-3-or-5? (iota 9 1)) (3 5 6 9) > (apply + (filter div-3-or-5? (iota 9 1))) 23 >
正しく計算できているようです.
同様にして, 1000未満の数で計算してみます.
ようこそ DrRacket, バージョン 5.3.3 [3m]. 言語: Pretty Big; memory limit: 128 MB. > (apply + (filter div-3-or-5? (iota 999 1))) 233168 >
この問題は, 3の倍数の総和と5の倍数の総和から, 15の倍数の総和を引くことでも求められます.
ようこそ DrRacket, バージョン 5.3.3 [3m]. 言語: Pretty Big; memory limit: 512 MB. > (require srfi/1) > (apply + (iota 333 3 3)) 166833 > (apply + (iota 199 5 5)) 99500 > (apply + (iota 66 15 15)) 33165 > (- (+ 166833 99500) 33165) 233168 >
0 件のコメント:
コメントを投稿