« 「すべてがFになる」を読んだ。 | トップページ | ドコモSH-03Aを買った。 »

2009年2月 9日 (月)

Excelで分割数を計算してみる。

整数nを順序を区別せずに自然数の和に分割するときの数、分割数の計算がすごく印象的な式でできるのを知った。

http://ja.wikipedia.org/wiki/%E6%95%B4%E6%95%B0%E5%88%86%E5%89%B2

とりあえずVBAで再帰でやろうとしたら、すぐにスタックのエラー。早すぎるよ...で再帰じゃないバージョンでプログラム。こんな感じで。

Option Explicit

Private Sub CommandButton1_Click()
    Dim n As Long
    Dim p(200) As Long
    Dim k As Long
   
    p(0) = 1
   
    For n = 1 To 200
        For k = 1 To 13
            If n - (3 * k * k - k) / 2 >= 0 Then
                p(n) = p(n) - ((-1) ^ k) * p(n - (3 * k * k - k) / 2)
            End If
            
            If n - (3 * k * k + k) / 2 >= 0 Then
                p(n) = p(n) - ((-1) ^ k) * p(n - (3 * k * k + k) / 2)
            End If
        Next k
   
        Worksheets("Sheet1").Cells(1 + n, 3) = n
        Worksheets("Sheet1").Cells(1 + n, 4) = p(n)
    Next n

End Sub

で計算結果がこれ。すぐに大きくなって、Longでもn=116が限界です。

Photo

« 「すべてがFになる」を読んだ。 | トップページ | ドコモSH-03Aを買った。 »

学問・資格」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/512682/43999392

この記事へのトラックバック一覧です: Excelで分割数を計算してみる。:

« 「すべてがFになる」を読んだ。 | トップページ | ドコモSH-03Aを買った。 »

最近のコメント

2018年11月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
フォト
無料ブログはココログ