一、什么是余数?
1、余数的概念
余数指的是一个数除以另外一个数所剩下的数量,余数通常用符号”%”表示。在Java中,求余数运算符是“%”,例如x%y表示x除以y的余数。
2、余数的定义
余数的定义可以归纳为:被除数(被除数a)减去除数(除数n)的乘积,即a-n*(a/n)。
int a = 17; int b = 3; int c = a % b; System.out.println(c); // 输出1
二、求余数的应用
1、余数的判断
对于判断一个数是否为另外一个数的倍数时,可以利用余数的性质判断。如果一个整数n除以另一个整数m时余数为0,则n是m的倍数;否则n不是m的倍数。
int a = 15;
int b = 3;
if(a % b == 0) {
System.out.println(a + "是" + b + "的倍数");
} else {
System.out.println(a + "不是" + b + "的倍数");
} // 输出15是3的倍数
2、取模运算
在计算机中,经常会使用取模运算(modulus operation),它返回两个整数相除的余数。Java中使用%运算符进行取模运算。
下面代码将给出绝对值函数的实现,这个实现使用%运算符来实现,它还考虑了0值的特殊情况。
public static int abs(int x) {
if (x == Integer.MIN_VALUE) return -(x + 1);
if (x < 0) x = -x;
return (x < 0) ? -x : x;
}
三、余数的性质
1、余数的循环性
在一些情况下,计算余数时发现计算结果呈现循环节。例如,1除以3的余数是1,4除以3的余数是1,7除以3的余数是1,10除以3的余数是1,以此类推。可以通过下面代码实现:
int b = 3;
for(int i = 1; i < 20; i++) {
System.out.println(i + " 除以 " + b + " 的余数是: " + i % b);
} // 输出1、2、0、1、2、0、1、2......
2、余数的加法性质
如果a = nk1 + r1,并且b = nk2 + r2,n、k1、k2、r1、r2是常数,则有:
a + b = n(k1 + k2) + (r1 + r2)
例如,如果a和b都是奇数,则a+b是偶数,因为1除以2的余数是1。可以通过下面代码实现:
int a = 3;
int b = 5;
if(a % 2 == 1 && b % 2 == 1) {
System.out.println(a + " + " + b + " = " + (a + b) + " 是偶数");
} // 输出3 + 5 = 8 是偶数
四、余数的注意事项
1、除数不能为0
在Java里,如果一个整数n除以0,Java虚拟机将抛出ArithmeticException异常。
int a = 5;
int b = 0;
try {
int c = a % b;
} catch(ArithmeticException e) {
System.out.println("发生了异常:" + e.getMessage());
} // 抛出异常:"Division by zero"
2、Java中取模运算的规则
Java中,取模(%)运算的符号和被除数相同。
int a = -14; int b = 3; int c = a % b; // -2,-14 = (-5) * 3 + (-2)
五、总结
本文详细讲解了Java中的余数运算及其应用和性质,让读者对Java求余数有了更深刻的理解。在编程中,灵活使用余数运算可以避免过多的if-else判断和循环,提高编码效率。但需要注意的是,除数不能为0,并且在Java中取模(%)运算的符号和被除数相同。
