zechs_gr-6 の回答履歴
- エクセル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
- ベストアンサー
- その他MS Office製品
- merlionXX
- 回答数7
- エクセル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
- ベストアンサー
- その他MS Office製品
- merlionXX
- 回答数7
- エクセル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
- ベストアンサー
- その他MS Office製品
- merlionXX
- 回答数7
- エクセル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
- ベストアンサー
- その他MS Office製品
- merlionXX
- 回答数7