数学中的模数和负数?
Modulo and Negative Number in Math?
今晚我很好奇数学中的模负数。
不管是什么编程语言,计算器returns different values都是靠自己背后的公式,如果初中考试有这些题,正确答案是什么:
-7 mod 2 = ?
7 mod -2 = ?
-7 mod -2 = ?
ps:对不起,我年纪大了记不起那些“基础题”的答案了,谢谢你的好意给我一个正确的答案!
ps2:献给献出这个问题的人:相信我,这个问题真的很有帮助,至少它可以帮助你理解为什么这段代码失败了:
function isEvenOrOdd(num) {
return num % 2 === 1 ?'odd' : 'even';
}
isEvenOrOdd(5); // 'odd'
isEvenOrOdd(18); // 'even'
isEvenOrOdd(0); // 'even'
isEvenOrOdd(-7); // 'even'
要计算 x mod m,其中 x 为负,您需要继续将 m 添加到 x 直到它变为非负,所以 -7 % 2 = -7 + 2 + 2 + 2 + 2 = 1 .
要检查一个数字是奇数还是偶数,总是用绝对值来做,比如|x| mod m 所以你不需要担心 modulo 的负值。
在数学中,模数必须>1,约定是模运算产生a+km=b
的最小非负整数解:
-7 mod 2 = 1
7 mod -2 Illegal
-7 mod -2 Illegal
扩展定义以包含负数(以及 1 和 -1)很容易:
-7 mod 2 = 1
7 mod -2 = 1
-7 mod -2 = 1
-7 mod 3 = 2
但是在计算中,不同的语言使用不同的约定:
-7 mod 2 = {1, or -1, or undefined}
我怀疑你的系统说 -7 mod 2 = -1
,所以 isEvenOrOdd(-7);
产生 'even'(因为 -1 ≠ 1)。
今晚我很好奇数学中的模负数。
不管是什么编程语言,计算器returns different values都是靠自己背后的公式,如果初中考试有这些题,正确答案是什么:
-7 mod 2 = ?
7 mod -2 = ?
-7 mod -2 = ?
ps:对不起,我年纪大了记不起那些“基础题”的答案了,谢谢你的好意给我一个正确的答案!
ps2:献给献出这个问题的人:相信我,这个问题真的很有帮助,至少它可以帮助你理解为什么这段代码失败了:
function isEvenOrOdd(num) {
return num % 2 === 1 ?'odd' : 'even';
}
isEvenOrOdd(5); // 'odd'
isEvenOrOdd(18); // 'even'
isEvenOrOdd(0); // 'even'
isEvenOrOdd(-7); // 'even'
要计算 x mod m,其中 x 为负,您需要继续将 m 添加到 x 直到它变为非负,所以 -7 % 2 = -7 + 2 + 2 + 2 + 2 = 1 .
要检查一个数字是奇数还是偶数,总是用绝对值来做,比如|x| mod m 所以你不需要担心 modulo 的负值。
在数学中,模数必须>1,约定是模运算产生a+km=b
的最小非负整数解:
-7 mod 2 = 1
7 mod -2 Illegal
-7 mod -2 Illegal
扩展定义以包含负数(以及 1 和 -1)很容易:
-7 mod 2 = 1
7 mod -2 = 1
-7 mod -2 = 1
-7 mod 3 = 2
但是在计算中,不同的语言使用不同的约定:
-7 mod 2 = {1, or -1, or undefined}
我怀疑你的系统说 -7 mod 2 = -1
,所以 isEvenOrOdd(-7);
产生 'even'(因为 -1 ≠ 1)。