2013年7月28日日曜日

[Project Euler] Problem 6 「二乗和の差」

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

プログラムを作成しなくても解けそうですが, 折角なので計算機を使います.

  1. 1から100までの自然数のリストを求める.
  2. すべての要素の和を求め, その結果を2乗する.
  3. それぞれを2乗したリストを作り, すべての要素の和を求める.

ここに載せるほどのことはないと思いますが, 定義した手続きは次のようなものです.

(require srfi/1)

(define (square n) (* n n))

計算結果は次のようになります.

ようこそ DrRacket, バージョン 5.3.3 [3m].
言語: Pretty Big; memory limit: 512 MB.
> (- (square (fold + 0 (iota 100 1)))
     (fold + 0 (map square (iota 100 1))))
25164150
> 

0 件のコメント:

コメントを投稿