"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.
我正在用 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.