这个完美的数字函数有什么问题? 该方法应该决定输入数字是否是完美数字。答案应该是从1到输入的所有完美数字。
例如:1 - 100,答案是6和28
{{1}}
答案 0 :(得分:3)
你至少有几个问题:
例如......
If sum = myInput Then
Return True
End If
应在 循环后检查上面的 。
endCounter
设置为myInput \ 2
,所以您并未对所有除数求和。也许你这样做是为了优化。但如果是这样,你就会忘记一些事情。快速解决方法是将endCounter
分配更改为:
endCounter = myInput - 1
另外,为避免将1
作为有效的完整数字返回,我会将sum
初始化为0
,并且会在1
处正常启动循环,而不是{ {1}}。
所以你的功能看起来像是:
2
如果你愿意的话,我相信你可以进一步优化这个。
(*)考虑开启Public Function isPerfect(myInput As Integer) As Boolean
Dim endCounter As Integer = myInput - 1
Dim sum As Integer = 0
For perfectCounter As Integer = 1 To endCounter
If myInput Mod perfectCounter = 0 Then
sum += perfectCounter
End If
Next
Return sum = myInput
End Function
。
答案 1 :(得分:0)
以下是isPerfect的正确实现:
Public Function isPerfect(myInput As Integer) As Boolean
dim Sum as Integer = 1
For i as Integer = 2 To myInput / 2
If myInput Mod i = 0 Then Sum = Sum + i
Next
Return Sum = myInput
End Function