程序冻结了特定的数字

时间:2017-10-11 23:51:20

标签: vb.net

这段代码应该是一个数字并找到它的主要因素。

为什么这段代码适用于像2345这样的数字(它会像预期的那样返回5,7,67),但它不能用于500和800这样的数字?

编辑:当我说它不起作用时,程序根本无任何操作和/或按钮点击冻结。然后我必须在vb。

中停止该程序
    Dim number As Double = txtNum.Text
    Dim var As Double = 2
    Dim result As Double
    If number > 1 Then
        lst1.Items.Clear()
        lst1.Items.Add("The prime factors of " & number & ":")
        Do While number > 1
            result = number / var
            If result = Int(result) Then
                lst1.Items.Add(var)
                number = result
            End If
            var = var + 1
        Loop
    Else
        lst1.Items.Clear()
        lst1.Items.Add("Let try that again...")
    End If

1 个答案:

答案 0 :(得分:1)

问题是因为500除以2是250,除以5是50 ......然后程序继续除以6而不是再次尝试除以5。一旦var达到10,number变为5,并且没有进一步的划分允许它达到1 - 因此创建了无限循环。

通过更改

If result = Int(result) Then
    lst1.Items.Add(var)
    number = result
End If
var = var + 1

If result = Int(result) Then
    lst1.Items.Add(var)
    number = result
Else
    var = var + 1
End If

在必要时,它正确地通过相同的素因子进行多次划分。