第13講 素数探索
第3話 素数探索プログラム例
前話解答例
素数
Private Sub CommandButton1_Click()

  Dim i As Integer, cn As Integer, a As Integer, s As Integer
  cn = 0
  For i = 1 To 100
    If sh(i) = 1 Then
      a = cn Mod 10
      s = Int(cn / 10)
      Cells(5 + s, 1 + a) = i
      cn = cn + 1
    End If
  Next

End Sub
Function sh(a As Integer)

  If a = 1 Then
    sh = 0
    Exit Function
  End If
  If a = 2 Then
    sh = 1
    Exit Function
  End If
  If a Mod 2 = 0 Then
    sh = 0
    Exit Function
  End If
  Dim o As Integer, i As Integer
  o = Int(Sqr(a))
  For i = 3 To o Step 2
    If a Mod i = 0 Then
      sh = 0
      Exit Function
    End If
  Next
  sh = 1
  
End Function

Private Sub CommandButton2_Click()

  Range("5:2000").Select
  Selection.ClearContents
  Cells(1, 1).Select
  
End Sub

ダウンロード参考添付ファイル

こんな単純なプログラムでも皆さんかなり悩んだと思います
もし、簡単にできたとしたらあなたは天才ですよ。

素数を判定するとき、
奇数で割ってきていますが、
実は、素数で割れば十分です。
例えば、241が素数であることを判定するには、
3,5,7,11,13
で十分です。
3で割り切れなければ、もちろん9では割り切れませんよね。
そこで、素数で割っていくように改良したいと思います。
この改良を行う前に、改良の効果を調べるために、
計算にかかった時間を計測できるようにして下さい。
時間計測は、Timerを使います。
Timerは午前0次0文0秒からの経過時間を実数型(Single)で返してくれます。
経過時間を受け取る実数型変数を2つ用意して、
プログラムの開始時間と終了時間をそれぞれの変数で受け取って、
差を表示させればよいのです。
as
また、1から100まですと、あっという間ですから、
1から100000までに変更して下さい。
また、生成された個数の素数も表示できるように変更して下さい。




第2話へ 第4話へ
004

eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
excel 2013 2010 2007 vba入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門へ
小学生からエンジニアまでのRuby入門へ
本サイトトップへ