dポイントプレゼントキャンペーン実施中!

1から1000の間にある素数の数を表示させるやり方を教えてください。

A 回答 (4件)

あんまりいいとは言えないけど


'1~1000までの素数の数を求める
dim prime(200)
dim count
dim i

count=0
prime(0)=2
count=count+1

for i=3 to 1000 step 2
if(isPrime(i)) then
prime(count)=i
count = count +1
end if
next
MsgBox count

function isPrime(n)
dim i,result
i=0
result = true
do while(prime(i)^2 <= n)
if(n mod prime(i) =0) then result=false : exit do
i=i+1
loop
isPrime = result
end function
    • good
    • 1
この回答へのお礼

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

お礼日時:2004/11/09 19:29

エラトステネスのふるいで、偶数の素数は2だけなので、2だけ特別扱いして奇数だけで考えると配列の数を半分にできます。


配列0から498を用意する。配列0が3、1が5・・・配列nが2*n+3に相当する。
ビット演算を使えばさらに省メモリ化できますが。。。面倒ですね。

ちなみに、1は素数ではありません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/11/09 19:29

(1)1から1000までの配列を用意する。


(2)2について、その2の2倍、3倍、4倍の数に「記し」をつける(4、8、16、32、・・)。1000まで。印とは「素数でない」という記しになる。
(3)次に2の隣の、印しが付いていない3について、(2)と同じことをする。(6、9、12、15、18、・・に印をつける。1000を越えないまで)
(4)1000の平方数まで行ったら止める。
理由:
http://www.hokuriku.ne.jp/fukiyo/math-obe/eratos …参照
(5)印のついていない数1,2,3,5,7、・・を拾う。
これを「エラトステネス(ギリシャの学者人名に由来)の篩(ふるい)」といい、これ以上よいアルゴリズムは見つかっていないようです。
参照
http://www.arch.kumamoto-u.ac.jp/hagane/yamanari …
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/11/09 19:30

http://ja.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0
指で数えてください。

宿題なら、
エラトステネスのふるい
で検索してみてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/11/09 19:30

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