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
2012年1月2日月曜日
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をそのままテキストファイルに書きだすことにした。
目的は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>
登録:
投稿 (Atom)