VB完美的功能

时间:2015-10-06 18:53:52

标签: vb.net

这个完美的数字函数有什么问题? 该方法应该决定输入数字是否是完美数字。答案应该是从1到输入的所有完美数字。

例如:1 - 100,答案是6和28

{{1}}

2 个答案:

答案 0 :(得分:3)

你至少有几个问题:

  1. 在你完成对除数的求和之前,你正在验证循环中 的完美数字。
  2. 例如......

    If sum = myInput Then
        Return True
    End If
    

    应在 循环后检查上面的

    1. 更重要的是,因为您将endCounter设置为myInput \ 2,所以您并未对所有除数求和。也许你这样做是为了优化。但如果是这样,你就会忘记一些事情。
    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