zechs_gr-6のプロフィール

@zechs_gr-6 zechs_gr-6
ありがとう数4
質問数0
回答数4
ベストアンサー数
1
ベストアンサー率
100%
お礼率
0%

  • 登録日2010/06/12
  • エクセルVBAで実行時エラー7、メモリー不足が出ます。

    エクセルVBAで実行時エラー7、メモリー不足が出ます。 以下はVBAで素数を検索するコードです。 2億までは以下のように問題なく検索できました。 1億まで検索 素数の個数:5,761,455 上限値内の最大の素数:99,999,989 検索時間: 28.64063 2億まで検索 素数の個数:11,078,937 上限値内の最大の素数:199,999,991 検索時間: 59.34375 ところが3億にすると「実行時エラー7、メモリー不足」が出てしまいます。 これを回避する方法はないでしょうか? エクセル2000、Win2000です。 システムのプロパティを見ると Intel(R) Celeron(R) CPU 420@ 1.60GHz AT/AT COMPATIBLE 1,014,896,KB RAM となっています。 コードは下記の通りです。 Sub Prime()   Const MX As Long = 300000000 '検索上限値(3億)   Dim flg(2 To MX) As Boolean 'フラグ配列   Dim cnt As Long, i As Long, j As Long, prm As Long   Dim t As Single     t = Timer   For i = 2 To MX '2から検索上限値までの間に     If Not flg(i) Then 'フラグがTRUEでなければ       For j = i + i To MX Step i 'その倍数(当然合成数)ごとに         flg(j) = True 'フラグをTRUEに       Next j     End If   Next i      For i = 2 To MX     If Not flg(i) Then 'フラグがTRUEでなければ       cnt = cnt + 1 '素数にカウント       prm = i '素数代入     End If   Next      Debug.Print "素数の個数:" & Format(cnt, "#,###") _   & vbNewLine & "上限値内の最大の素数:" & Format(prm, "#,###") _   & vbNewLine & "検索時間:"; Timer - t   Erase flg '配列が占有していたメモリを解放    End Sub

  • エクセルVBAで実行時エラー7、メモリー不足が出ます。

    エクセルVBAで実行時エラー7、メモリー不足が出ます。 以下はVBAで素数を検索するコードです。 2億までは以下のように問題なく検索できました。 1億まで検索 素数の個数:5,761,455 上限値内の最大の素数:99,999,989 検索時間: 28.64063 2億まで検索 素数の個数:11,078,937 上限値内の最大の素数:199,999,991 検索時間: 59.34375 ところが3億にすると「実行時エラー7、メモリー不足」が出てしまいます。 これを回避する方法はないでしょうか? エクセル2000、Win2000です。 システムのプロパティを見ると Intel(R) Celeron(R) CPU 420@ 1.60GHz AT/AT COMPATIBLE 1,014,896,KB RAM となっています。 コードは下記の通りです。 Sub Prime()   Const MX As Long = 300000000 '検索上限値(3億)   Dim flg(2 To MX) As Boolean 'フラグ配列   Dim cnt As Long, i As Long, j As Long, prm As Long   Dim t As Single     t = Timer   For i = 2 To MX '2から検索上限値までの間に     If Not flg(i) Then 'フラグがTRUEでなければ       For j = i + i To MX Step i 'その倍数(当然合成数)ごとに         flg(j) = True 'フラグをTRUEに       Next j     End If   Next i      For i = 2 To MX     If Not flg(i) Then 'フラグがTRUEでなければ       cnt = cnt + 1 '素数にカウント       prm = i '素数代入     End If   Next      Debug.Print "素数の個数:" & Format(cnt, "#,###") _   & vbNewLine & "上限値内の最大の素数:" & Format(prm, "#,###") _   & vbNewLine & "検索時間:"; Timer - t   Erase flg '配列が占有していたメモリを解放    End Sub

  • エクセルVBAで実行時エラー7、メモリー不足が出ます。

    エクセルVBAで実行時エラー7、メモリー不足が出ます。 以下はVBAで素数を検索するコードです。 2億までは以下のように問題なく検索できました。 1億まで検索 素数の個数:5,761,455 上限値内の最大の素数:99,999,989 検索時間: 28.64063 2億まで検索 素数の個数:11,078,937 上限値内の最大の素数:199,999,991 検索時間: 59.34375 ところが3億にすると「実行時エラー7、メモリー不足」が出てしまいます。 これを回避する方法はないでしょうか? エクセル2000、Win2000です。 システムのプロパティを見ると Intel(R) Celeron(R) CPU 420@ 1.60GHz AT/AT COMPATIBLE 1,014,896,KB RAM となっています。 コードは下記の通りです。 Sub Prime()   Const MX As Long = 300000000 '検索上限値(3億)   Dim flg(2 To MX) As Boolean 'フラグ配列   Dim cnt As Long, i As Long, j As Long, prm As Long   Dim t As Single     t = Timer   For i = 2 To MX '2から検索上限値までの間に     If Not flg(i) Then 'フラグがTRUEでなければ       For j = i + i To MX Step i 'その倍数(当然合成数)ごとに         flg(j) = True 'フラグをTRUEに       Next j     End If   Next i      For i = 2 To MX     If Not flg(i) Then 'フラグがTRUEでなければ       cnt = cnt + 1 '素数にカウント       prm = i '素数代入     End If   Next      Debug.Print "素数の個数:" & Format(cnt, "#,###") _   & vbNewLine & "上限値内の最大の素数:" & Format(prm, "#,###") _   & vbNewLine & "検索時間:"; Timer - t   Erase flg '配列が占有していたメモリを解放    End Sub

  • エクセルVBAで実行時エラー7、メモリー不足が出ます。

    エクセルVBAで実行時エラー7、メモリー不足が出ます。 以下はVBAで素数を検索するコードです。 2億までは以下のように問題なく検索できました。 1億まで検索 素数の個数:5,761,455 上限値内の最大の素数:99,999,989 検索時間: 28.64063 2億まで検索 素数の個数:11,078,937 上限値内の最大の素数:199,999,991 検索時間: 59.34375 ところが3億にすると「実行時エラー7、メモリー不足」が出てしまいます。 これを回避する方法はないでしょうか? エクセル2000、Win2000です。 システムのプロパティを見ると Intel(R) Celeron(R) CPU 420@ 1.60GHz AT/AT COMPATIBLE 1,014,896,KB RAM となっています。 コードは下記の通りです。 Sub Prime()   Const MX As Long = 300000000 '検索上限値(3億)   Dim flg(2 To MX) As Boolean 'フラグ配列   Dim cnt As Long, i As Long, j As Long, prm As Long   Dim t As Single     t = Timer   For i = 2 To MX '2から検索上限値までの間に     If Not flg(i) Then 'フラグがTRUEでなければ       For j = i + i To MX Step i 'その倍数(当然合成数)ごとに         flg(j) = True 'フラグをTRUEに       Next j     End If   Next i      For i = 2 To MX     If Not flg(i) Then 'フラグがTRUEでなければ       cnt = cnt + 1 '素数にカウント       prm = i '素数代入     End If   Next      Debug.Print "素数の個数:" & Format(cnt, "#,###") _   & vbNewLine & "上限値内の最大の素数:" & Format(prm, "#,###") _   & vbNewLine & "検索時間:"; Timer - t   Erase flg '配列が占有していたメモリを解放    End Sub