"convert"奇数到偶数使用特定序列的方法

Method to "convert" odd numbers to even numbers using a specific sequence

我正在用 C# 重新创建一个在 Visual Basic 6.0 中完成的应用程序,问题是我没有源代码,并且有一种方法可以读取可能包含偶数或奇数。

如果输入值为偶数,什么都不做,但是如果输入值为奇数,它会做一些我无法理解的事情,做一些测试我可以找到一个序列:

我应该使用什么公式来做到这一点?

如果您能接受 F# 中的答案

let f x = ((x + 1) / 4) * 4

for x = 1 to 49 do
    if x % 2 <> 0 then
        let y = f x
        Console.WriteLine $"{x} -> {y}"

这会产生所需的输出:

for (int i = 1; i < 50; i += 2) {
    Console.WriteLine($"{i} -> {(i + 1) / 4 * 4}");
    if (i % 10 == 9) {
        Console.WriteLine();
    }
}

说明:我们正在使用整数运算,即除法的结果被截断了。对于 i = 5,我们得到 (5 + 1) / 4 = 1,即 trunc(1.5) = 1 然后 1 * 4 = 4.

对于 i = 7:(7 + 1) / 4 = 2,则 2 * 4 = 8。

只要 i 的最后一位数字是 9,我们就会附加一个空行来创建 5 行的组。 % 是模运算符。它与整数除法互补并产生除法的余数,例如 6 % 4 = 2。我们可以像这样反转整数除法:6 / 4 * 4 + 6 % 4 = 6.