プロが教える店舗&オフィスのセキュリティ対策術

VBA初心者です。
素数を求めるプログラムを作らないといけないのですが、やり方が良く分かりません。
modやloopを使って作るのでしょうか。教えてください。

gooドクター

A 回答 (6件)

#1です。



適当にマクロ作ったら
1~100までで26個
1~1000までで169個
1~10000までで1230個
1~30000までで3246個
だけ素数が発見できました。

1~100までは数字を直接見て確認したので。おそらく間違っていないと思います。
for文とint文と四則演算のみで簡単にできますよ。

この回答への補足

for文、int文、四則演算を使ってなんとかできました。
半分こじつけたようになったかもしれませんが。

ありがとうございました!

補足日時:2005/06/24 17:42
    • good
    • 0
この回答へのお礼

書き込みありがとうございます。
for文と四則演算までは組めるのですが、int文を良く知らなくて止まってしまいました。^^;テキストにもintの説明はしてないみたいで、あまり使わないもの・・・?なんですかねぇ。

お礼日時:2005/06/24 13:59

#4 のWendy02 です。



>ただ、Functionというのをまだ知らないのですが、そのFunctionがないと素数の判定は組めないものなのでしょうか。

別にそういうわけではないけれども、構造化したほうが、見やすいからです。
ワン・プロシージシャーに直したいのでしたら、

# flg = PrimeFound(i)

の部分に、そのまま当てはめればよいと思います。
    • good
    • 0
この回答へのお礼

初心者なので、よくわからない単語が並んでいましたが、なんとかできました。
ありがとうございました!

お礼日時:2005/06/24 17:49

エラストテネスの篩(ふるい)というアルゴリズムはご存知ですか。


もし知らないのならそちらの勉強が先です。
プログラムは、ますロジックやアルゴリズムありき。
http://etlab.mis.ous.ac.jp/knowledge_e/089/expla …
    • good
    • 0
この回答へのお礼

書き込みありがとうございます。

一応エラストテネスのふるいのやり方は聞きました。
そのやり方が一番適当かなと思い、私はプログラムを組んでいるのですが、なかなか出来ない状態です。^^;

お礼日時:2005/06/24 14:03

VBA/VBをする人間だから、誰でも一度はとおる問題かもしれませんね。


問題の解答を書くべきではないのかもしれませんね。しかし、しょせん、インターネット検索で調べれば、同じですから、不愉快になった方が、おられましたらすみません。

一応、#3のHAL2010 さんの個数と比較してみましたが、同じでした。

Sub test()
Dim i As Long, flg As Boolean
Dim Numbers As String, cnt As Long
For i = 1 To 100
flg = PrimeFound(i)
If flg Then
  Numbers = Numbers & "," & i
  cnt = cnt + 1
 End If
Next i
 MsgBox Mid$(Numbers, 2) & Chr(13) & cnt & "個"
 'MsgBox cnt
End Sub

Function PrimeFound(ByVal n As Long) As Boolean
 Dim div As Long
 div = 2
 Do While div <= (n / 2)
  If n Mod div = 0 Then
   PrimeFound = False
   Exit Function
  End If
  div = div + 1
 Loop
 PrimeFound = True
End Function

この回答への補足

ソースありがとうございます。
ただ、Functionというのをまだ知らないのですが、そのFunctionがないと素数の判定は組めないものなのでしょうか。

補足日時:2005/06/24 13:48
    • good
    • 0

こんにちは、じゃんぬねっと です。



とりあえず、調べようと思えばいくばくか見付かりますが、いかがでしょう?
http://www.google.co.jp/search?biw=826&hl=ja&q=V …
    • good
    • 0
この回答へのお礼

ありがとうございます。

私もネット検索をして試行錯誤しているのですが、なかなか上手くいってない状態です・・・・。^^;

お礼日時:2005/06/24 13:52

学校の課題っぽい匂いがしますのでヒントだけ…


素数とは
その数字自身と1以外で割り切れない整数です。
つまり、その数字未満の、1を除くすべての整数で割り切れなければ素数であることが証明できます。

ループの作り方
for a = 1 to 100
next

aを1から100まで加算し、処理を行います。

int(a/x)
aをxで割った数の整数部分のみを抽出します。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

gooドクター

人気Q&Aランキング