2012年1月2日月曜日

素数リストの作成

EXCEL VBAによる、素数リストの作成コード。

1万以下の素数一覧が欲しかったので作りました。
「1万以下」という範囲を変えたい場合は、コードの最初のConst tmpの値を変えて下さい。
ただし、より広い範囲でリストを作る場合のLong型の限界、配列サイズの限界、実行速度などについては考慮していません。

<プログラムの概要>
・ワークシートのA列に素数のリストを出力します。
・いわゆるエラトステネスの篩(http://goo.gl/Xxqfc)によって素数を判定しています。
・1万以下の素数について、http://www.ysr.net.it-chiba.ac.jp/yashiro/sosu/ のリストと一致することを確認しています。

<コード>
Const tmp = 10000

Sub makePrimeList()

Dim n() As Long '下記(ReDim)参照
Dim p() As Long '素数のリスト
Dim UpperBound As Long '対象範囲
Dim i As Long
Dim j As Long
Dim PrimeCount As Long


UpperBound = tmp

ReDim n(UpperBound, 1)
' フィールド1が自然数、フィールド2が0のものが素数
' 例:n(7,0)=7,n(7,1)=0 : 7は素数
' n(8,0)=8,n(8,1)=1 : 8は素数でない

ReDim p(UpperBound)

For i = 0 To UpperBound
 n(i, 0) = i
 n(i, 1) = 0
Next

'0,1は素数でない
n(0, 1) = 1
n(1, 1) = 1

PrimeCount = 0
For i = 2 To UpperBound
 If n(i, 1) = 0 Then
  PrimeCount = PrimeCount + 1
  p(PrimeCount) = i

  j = i
  Do While j <= UpperBound
   n(j, 1) = 1
   j = j + i
  Loop
 End If

Next

[A:A].ClearContents
For i = 1 To PrimeCount
 Cells(i, 1).Value = p(i)
Next

End Sub

2011年8月28日日曜日

IAISの「ALMイシューペーパー」を読む(17)

IAIS(保険監督者国際機構)作成の「ALMイシューペーパー」(「資産負債管理に関するイシューペーパー」(2006))を読む。<パラグラフ68からパラグラフ78>

2011年8月27日土曜日

IAISの「ALMイシューペーパー」を読む(16)

IAIS(保険監督者国際機構)作成の「ALMイシューペーパー」(「資産負債管理に関するイシューペーパー」(2006))を読む。<パラグラフ59からパラグラフ67>

2011年8月9日火曜日

mixiのページ内容をテキストファイルに書きだすマクロ

mixiのページ内容をテキストファイルに書きだすマクロを作成した。

目的はmixiで今まで書いてきた日記(過去ログ)のエクスポートなのだが、mixiにはその機能がないので、自力で取得することにした。どういう形で出力すればいいのかよく分からないので、とりあえず今回はHTMLをそのままテキストファイルに書きだすことにした。

2011年6月27日月曜日

IAISの「ALMイシューペーパー」を読む(15)

IAIS(保険監督者国際機構)作成の「ALMイシューペーパー」(「資産負債管理に関するイシューペーパー」(2006))を読む。<パラグラフ52からパラグラフ58>

2011年6月22日水曜日

IAISの「ALMイシューペーパー」を読む(14)

IAIS(保険監督者国際機構)作成の「ALMイシューペーパー」(「資産負債管理に関するイシューペーパー」(2006))を読む。<パラグラフ44からパラグラフ51>

2011年6月12日日曜日

IAISの「ALMイシューペーパー」を読む(13)

IAIS(保険監督者国際機構)作成の「ALMイシューペーパー」(「資産負債管理に関するイシューペーパー」(2006))を読む。<パラグラフ39からパラグラフ43>