目前我正在使用Java中的%运算符。我以为我明白了,但在遇到这个问题之后我现在很困惑。所以我知道10%3 =剩余1.我的问题是为什么3%8 =剩余3我认为这将等于0因为3进入8次零次?另一个例子是2%8 =剩余2为什么这些余数也不为零呢?如果有人能够解释为什么这会很棒!谢谢!
答案 0 :(得分:1)
在https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html
的Java教程中解释了余数运算符如果您正在寻找模运算符,那么请使用Math.floorMod
来处理您想要的负数。该文档提供了%
和floorMod
之间差异的示例:http://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#floorMod-int-int-
答案 1 :(得分:0)
从数学上讲,这是正确的行为。
希望人们会给我一个题外话,但整数mod n是从0到puts("Write is a string that you want to print in reverse")
#taking a string from the user
string = gets.to_s #getting input and converting into string
def reverse(string)
i = 0
abc = [] # creating empty array
while i < string.length
abc.unshift(string[i]) #populating empty array in reverse
i = i + 1
end
return abc.join
end
puts ("In reverse: " + reverse(string))
的所有整数。它们形成multiplicative group,这对数论和密码学很重要。事实上,如果你这样做
n - 1
这将一遍又一遍地给你从0到(n - 1)的所有数字,就像小组一样。
在不详细说明的情况下,mathematical group是一个集合,其操作行为或多或少与您期望的“普通”算术一样。例如,如果一个集合在乘法下形成一个组,则意味着乘法“适用于”该集合。
如果for (int i = 0; i < x; i++) {
Console.WriteLine(i % n);
}
是素数的幂(例如32),则整数mod n形成finite field,这意味着它的行为与普通算术非常相似。
TL; DR 此行为是设计使然。它在数学上也完全正确。