![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
こんにちは
1から入力された数(N)までの素因数を数えるプログラムを
作成したいのですが、うまくいきません。
たとえば10と入力すると2と表示されてしまいます。
どこがおかしいのかわかりません。
どなたか教えてください。おねがいします。
N個の配列を用意し、1を入れていき、
素因数でない数の要素には0をいれて、
最終的に1が入っている配列の数を数えて1~Nまでの
素因数の数を数える方法を考えています。
Dim M As Integer
Dim N As Integer
Dim i As Integer
Dim j As Integer
Dim sum As Integer
Dim L(1000) As Double
N = Val(TextBox1)
M = N
i = 1
Do Until i > N
L(i) = 1
i = i + 1
Loop
i = 2
Do Until i > M
j = i * 2
Do Until j > M
L(j) = 0
j = j + 1
Loop
i = i + 1
Loop
sum = 0
For i = 2 To N
If L(i) = 1 Then
sum = sum + 1
End If
Next i
No.3ベストアンサー
- 回答日時:
素因数というのは素数の間違いでしょうか。
もしそうであれば、素数を調べ上げる古典的な方法である「エラトステネスのふるい」のロジックを実践しようとしているように見えますが、
j = i * 2
Do Until j > M
L(j) = 0
j = j + 1
Loop
の部分を
j = i * 2
Do Until j > M
L(j) = 0
j = j + i ← 1 ではなく i です。
Loop
とする必要があります。
「エラトステネスのふるい」については検索エンジンで調べると参考になるページがいろいろ見つかるでしょう。
No.4
- 回答日時:
>どこがおかしいのかわかりません。
自分で見つけなければ成長しないよ。
バグの見つけ方が分からない?
一行ずつ実行しながらローカルウィンドウ、ウォッチウインドウで監視するとか。
参考URL:http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/00 …
todo36さん、アドバイスありがとうございます。
これからは参考URLのサイトにかかれていたことを
参考にしていこうと思います。
No.1
- 回答日時:
今まで見た中で、一番まともな約数を見つける方法
このアルゴリズム最強
約数=素数の集合を互いに掛け合わせたもの
履歴から、素数を見つける部分だけ利用をしたらいい
参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=153758
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Excel(エクセル) vba 「Nextに対するForが見当たりません」のエラーが発生する原因 1 2022/10/21 15:46
- Visual Basic(VBA) A列B列C列 3 2023/04/26 18:11
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) このマクロの説明文を教えてほしいです。 1 2023/01/12 09:17
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IF関数でEmpty値を設定する方法。
-
複数のテキストボックスに同じ...
-
パソコンキーボードで時分秒を...
-
VBAで配列の計算
-
変数を動的に作るには?
-
動的配列が存在(要素が有る)か...
-
For文と配列
-
ランダムに並んでるキーボード...
-
配列プロパティをREDIMする方法...
-
排列と配列の漢字の使い分けは
-
C言語のread関数に関するファイ...
-
EXCEL VBA で、0から?1から?
-
多次元配列
-
VB.net 引数で配列変数を渡す際...
-
配列の要素数を超えた参照のコ...
-
VBSでテキストファイル内の数字...
-
応用情報技術者試験の令和元年...
-
ラジオボタンのチェックをEnter...
-
C#での画像送信プログラム(ネ...
-
VBで作った乱数を一度も重複さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
応用情報技術者試験の令和元年...
-
IF関数でEmpty値を設定する方法。
-
VBAで配列の計算
-
パソコンキーボードで時分秒を...
-
EXCEL VBA で、0から?1から?
-
動的配列が存在(要素が有る)か...
-
変数を動的に作るには?
-
C言語 重複しない4ケタの乱数...
-
VBで作った乱数を一度も重複さ...
-
VB.net 引数で配列変数を渡す際...
-
配列の要素数を超えた参照のコ...
-
C#の質問
-
複数のテキストボックスに同じ...
-
VBでbyte配列型のインスタンス...
-
For文と配列
-
遅延バインディングを使用でき...
-
【MFC】GetCount()とGetSize()...
-
配列プロパティをREDIMする方法...
-
Excel VBAで配列の途中から(X)M...
-
五目並べのプログラムを配列と...
おすすめ情報