VBA奇数/模运算

4
我正在寻求关于我的VBA脚本的帮助。我卡在了如何使用mod函数上。
到目前为止,这是我所做的:
Function AddOddNumbersWithMod(nr)
    Dim i, sum
    sum = 0
    For i = (IF 1 MOD 2 = 0) to nr step 1
        sum = sum + i <-- (calculate all the odd numbers before nr)
    Next i
End Function

任何建议都将不胜感激。

1
请学会在发布帖子时格式化您的代码。您可以通过单击输入帖子区域右上角的 ? 按钮来了解如何操作。(而且,您的代码中有一个明显的错误 - 查看 For i = 后面括号中的条件,看看能否发现它。) - Ken White
5
为什么要使用循环?1 + 3 + 5 + ... + (2k-1) = k^2 - John Coleman
学习循环 https://www.w3schools.com/asp/asp_looping.asp - Pavan Chandaka
1
另一种方式是... 对于 i = 1 到 nr,步长为2 - A.S.H
如果 (1 Mod 2) = 0,则始终为 False0。你为什么要在 If 语句中使用计算,而且只使用一些固定的魔数,这些数字将始终计算出相同的结果呢?只需使用 For i = 0 to nr 并找到其他有用的地方学习如何使用 MOD - FreeMan
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Darren Bartrup-Cook
4个回答

8

为了完整起见,这里提供一份无循环版本:

Function SumOfOdds(n As Long) As Long
    'returns sum 1 + 3 + 5 + ... of all odd numbers <= n
    SumOfOdds = Int((n + 1) / 2) ^ 2
End Function

根据这张图片:

enter image description here

L形状包含连续奇数,很好地拟合在一起形成完美的正方形。这个漂亮的模式为古希腊人所熟知。


2
我正在尝试解决这个方程,它真的是一件美妙的事情 :) - Dan Donoghue
2
非常有教育意义,致敬。 - A.S.H
1
数学老师的诗歌 :) - Shai Rado

2
Function AddOddNumbersWithMod(nr)
    Dim i As Long, sum As Long
    sum = 0
    For i = 1 To nr - 1 Step 1
        If (i Mod 2 <> 0) Then
            sum = sum + i  ' <-- (calculate all the odd numbers before nr)
        End If
    Next i

    AddOddNumbersWithMod = sum
End Function

如果不使用 Mod,您可以使用步骤 2 跳过从 1 开始的偶数来添加奇数。

Function AddOddNumbersWithoutMod(nr)
    Dim i As Long, sum As Long
    sum = 0
    For i = 1 To nr - 1 Step 2
        sum = sum + i  ' <-- (calculate all the odd numbers before nr)
    Next i

    AddOddNumbersWithoutMod = sum
End Function

2
您希望i除以2的余数为1,这表示余数。如果您将2作为除数,并且想要余数为1,则显示奇数。例如,7 mod 2 = 1,这是因为7除以2等于3,余数为1,我们感兴趣的是这个余数。
Function AddOddNumbersWithMod(nr)
    Dim i As Double, MySum As Double
    For i = 0 To nr
         If i Mod 2 = 1 Then MySum = MySum + i ' <-- (calculate all the odd numbers before nr)
    Next i
    AddOddNumbersWithMod = MySum
End Function

0
Sub Oddeven()
  Dim x As Double
  x = InputBox("Please enter the Number: ")
  If x Mod 2 = 0 Then
    MsgBox ("The Number is the Even Number")
  Else
    MsgBox ("The Number is the Odd Number")
  End If
End Sub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接