最初の書き込みのような動作をするものをActive Basicで作ってみました。
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]#N88BASIC
Dim buf[MAX_PATH] As Byte
Dim a As QWord
Dim wa As QWord
Dim i As QWord
Dim kazu As QWord
Dim ok As Byte
GetModuleFileName(0,buf,MAX_PATH)
a=Val(Mid$(MakeStr(GetCommandLine()),Len(MakeStr(buf))+3))
print a
wa=0
For kazu=2 To a
ok=1
print kazu;"が素数かどうか検証中..."
For i=2 To (kazu/2+1)
if kazu mod i=0 Then
ok=0
Exit For
End If
Next
if ok=1 Then wa=wa+kazu
Next
print a;"までの素数の和は";wa;"です。"
10000までの所要時間:9820651ミリ秒(1回実測・目安として)
計測用プログラム [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]#N88BASIC
Dim buf[MAX_PATH] As Byte
Dim aaa As Word
Dim a As QWord
Dim wa As QWord
Dim i As QWord
Dim kazu As QWord
Dim ok As Byte
GetModuleFileName(0,buf,MAX_PATH)
a=Val(Mid$(MakeStr(GetCommandLine()),Len(MakeStr(buf))+3))
print a
wa=0
aaa=GetTickCount()
For kazu=2 To a
ok=1
print kazu;"が素数かどうか検証中..."
For i=2 To (kazu/2+1)
if kazu mod i=0 Then
ok=0
Exit For
End If
Next
if ok=1 Then wa=wa+kazu
Next
print a;"までの素数の和は";wa;"です。"
print "経過時間:";GetTickCount()-aaa;"ミリ秒"