注册 登录
编程论坛 VB6论坛

299 不是素数

dai333ccc 发布于 2014-12-07 22:45, 982 次点击
求解?????
10 回复
#2
dai333ccc2014-12-07 22:46
我在求200至300多的数的时候,求素数299竟然不在之列?vb能求出来吗?
#3
txxb2014-12-08 08:12
算了一下:2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307
#4
风吹过b2014-12-08 08:32
299 = 13*23
是不在素数之列

Private Sub Command1_Click()

Dim i As Long
Dim j As Long

Text1.Text = ""
For i = 200 To 300
    For j = 2 To i / 2
        If Int(i / j) * j = i Then
    If i = 299 Then Debug.Print i; j; i / j                    '只显示 299 的情况
            Exit For
        End If
    Next j
If j > i / 2 Then
Text1.Text = Text1.Text & i & vbCrLf
End If
Next i
End Sub
#5
dai333ccc2014-12-08 10:23
我算的跟3楼一样,299不在之列。谢版主解答,我没想到13*23=299
#6
txxb2014-12-08 10:36
你最大算到多大的质数了?
#7
dai333ccc2014-12-08 12:12
回复 4 楼 风吹过 b
If j > i / 2 Then Text1.Text = Text1.Text & i & vbCrLf  我想请问一下,这里的If j > i / 2 ,j怎么会比i/2大??我刚学不久,不理解,还请解答
#8
风吹过b2014-12-08 15:15
For j = 2 To i / 2        这里,j 循环到,比  i/2 大的时候,循环正常结束。

If j > i / 2 Then       如果循环结束时, j  比 i/2 要大,说明是循环正常结束,否则就是提前结束。


for i=1 to 10
....     不对I 进行修改
next i

正常结束后,i 的值是 11 ,正好要比终止值大。按步长增加上去,超过终止值,就正常结束循环。
#9
dai333ccc2014-12-08 21:22
回复 6楼 txxb
400
#10
dai333ccc2014-12-08 22:39
回复 8楼 风吹过b
看了三遍才理解你的解疑。非常感谢
#11
smart30002014-12-11 12:47
做一个按钮
Private Sub Command1_Click()
a = 299
For i = 2 To Sqr(299)
  If 299 Mod i = 0 Then
     MsgBox "299=" & i & "*" & 299 / i
    i = 299
  End If
Next i
End Sub

你点一下按钮,看到了什么?仔细看看你就会明白
1