这段代码应该是一个数字并找到它的主要因素。
为什么这段代码适用于像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
答案 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
在必要时,它正确地通过相同的素因子进行多次划分。