• 締切済み

素数の計算

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

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.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

kikuppe
質問者

お礼

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

回答No.3

エラトステネスのふるいで、偶数の素数は2だけなので、2だけ特別扱いして奇数だけで考えると配列の数を半分にできます。 配列0から498を用意する。配列0が3、1が5・・・配列nが2*n+3に相当する。 ビット演算を使えばさらに省メモリ化できますが。。。面倒ですね。 ちなみに、1は素数ではありません。

kikuppe
質問者

お礼

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

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

(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/eratosu.htm参照 (5)印のついていない数1,2,3,5,7、・・を拾う。 これを「エラトステネス(ギリシャの学者人名に由来)の篩(ふるい)」といい、これ以上よいアルゴリズムは見つかっていないようです。 参照 http://www.arch.kumamoto-u.ac.jp/hagane/yamanari/joho2/kougi3.html

kikuppe
質問者

お礼

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

  • ceita
  • ベストアンサー率24% (304/1218)
回答No.1

http://ja.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0 指で数えてください。 宿題なら、 エラトステネスのふるい で検索してみてください。

kikuppe
質問者

お礼

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

関連するQ&A

  • 2進数の計算について

    2進数の計算について分からない問題があるのでお願いします。 (1) 2進5ビットの数値で,01001をバイアス表示とみるとき,10進数ではいくつか (2) 10進数の4を2進5ビットで表す.バイアス表示を用いると,どのように表されるか. できるだけ詳しい回答くれるとありがたいです。

  • 2進数は計算には使えない? 16進数は使える? 

    ビット演算を勉強しているのですが、2進数はあくまでも考え方であって、実際のJavaScriptコードに2進数を記述してはいけないのでしょうか? ・16進数は使える? ・それとも10進数だけしか使えない?

  • 進数の計算です

    この計算をお願いします。 できれば、途中計算もお願いいたします。)右の数字は進数を表します 1)(26)10を2進数に。 2)(0.57251)10を2進数に 小数点以下5桁までです。 3)(26.57251)10を2進数に これも同様です。 4)(26)10を8進数に 5)(26)10を16進数に 6)(110101)2*(111)2 7)(1101000)2/(110)2 8)(26)10*4を2進数で表す 9)(26)10/4を2進数で表す かなり多いですが、わかるところだけでもお答えいただけたら幸いです。 お願いいたします。

  • HSP 素数計算

    最近HSPを始めた私は、repeat-loopを勉強して、ある値までの数字の素数判定が出来るようにプログラムしてみようと以下のように書いてみました。 (1・2は面倒だったので直接表示してしまいました) しかし、repeat 10 と書いているのに、2~3倍近い値まで計算され表示されます。(10と入れると29まで) 何処が問題か指摘してください。 screen 2,200,900,,200,600 mes "1は素数である" mes "2は素数である" a=3 repeat 10 repeat a-2,2 if a\cnt == 0{ mes ""+a+"は素数じゃない" goto *lipi } loop mes ""+a+"は素数である" *lipi a = a+1 loop stop OSは関係ないとは思いますが、一応Win2000です。

  • 16進数の計算

    2進数の計算は理解できるんですがどうしても16進数の計算ができません。 どうやれば16進数をマスターできますか。

  • 16進数から10進数の計算

    代数で16進数の勉強をしているのですが、分からないためどなたか教えて頂けないでしょうか? 問題)16進数演算の結果のうち、他と異なる物が1つある。それはどれか。10進数の10から15は16進数形式ではA~Fで表記するものとする。 (1)2AFDE-1BCDF (2)ABCD+5432 (3)1FEDC-FEDD (1)については、回答がありますが理解出来ません。 2AFDE=2×16^4+10×16^3+15×16^2+13×16+14 -1BCDF=1×16^4+11×16^3+12×16^2+13×16+15     15×16^3+2×16^2+15×16+15=F2FF なぜこの回答になるかも教えて下さい。宜しくお願い致します。

  • 2進数の計算

    2進数の計算 10進数の0.3125を2進数に直しなさい。 答え:0.0101 これの計算方法が全く分からないのですが、どなたかご教授願います。

  • 10進数をと2進数の計算が・・

    10進数で表されているものを2進数に変換して計算を行う。 というものなのですが・・ 4+9 8-1 4×6 がよくわかりません・・・。 変換したあとどうやって計算していいのかわかりません。。 どなたかご回答お願いいたします<(_ _)> 困っています。途中計算などがありますと非常に助かります。

  • 数の計算のイメージって?

    例えば3 + 2 = 5という計算をするとき、 脳内ではどういうイメージで処理していますか? ○○○+○○ のように、個数的、分離量的なイメージですか? それとも ←3─→←2→ のように、数直線的、連続量的なイメージですか? 自分としては、 算数の初歩の段階では自然数(個数)の計算がメインなので 個数的、分離量的なイメージで計算していたと思いますが、 小数、分数、正負の数など、数を学習する過程で いつの間にか 数直線的、連続量的なイメージで計算するようになっていた 気がします。 ただ、このことを意識するようになると、 上記のような、3 + 2 = 5 というような単純な計算で、 自分がどちらのイメージで処理しているのかが よくわからなくなってしまいました。 人は無意識に数を計算するとき、どういうイメージで処理しているのでしょうか?

  • 2進数の計算

    127 + (-3) の計算ですが 普通に10進数で計算してから124を2進数に直しても良いのですが、 敢えて2進数での計算方法を教えていただけませんでしょうか。 127は1111111ですが -3は8ビットで表さなければならないのでしょうか? その場合、足したり引いたりしても良いのでしょうか?

専門家に質問してみよう