跳转到内容

常用认识技巧

在在写算法的时候,有非常实用的基础数学技巧。下面我将列举一下。

1. 取模运算

作用:获取余数。

常用获取一个数字的个位数。 获取个位数num % 10 获取十位数num % 100,依次类推

int num = 23465;
int digit = num % 10; // 5
// 判断一个数是奇数还是偶数
num % 2 == 0 // 偶数
num % 2 == 1 // 奇数

2. 整数除法

作用:移除数字的最低位

常用是用来去掉数字的个位数。 去掉个位数num / 10 去掉十位数num / 100,依次类推

int num = 23465;
int remaining = num / 10; // 2346

3.数字反转

作用:将数字的各位逆序排列,常用于回文数判断或调整顺序。

int reverseNumber(int num) {
int reversed = 0;
while (num > 0) {
reversed = reversed * 10 + num % 10;
num /= 10;
}
return reversed;
} // 示例:123 → 321

4.位运算

作用:高效处理二进制数据,优化计算速度。

判断奇偶:num & 1(比 num % 2 更快)

乘/除 2:num << 1(乘 2),num >> 1(除 2)

5.素数判断

素数是不能被除了1和它自身以外的任何数整除

原理:检查数字n是否能被2到$\sqrt{n}$

只需检查奇数(除2外,偶数不可能是素数)

boolean isPrime(int n) {
if (n <= 1) return false; // 1和非正整数不是素数
if (n == 2) return true; // 2是素数
if (n % 2 == 0) return false; // 排除偶数
for (int i = 3; i * i <= n; i += 2) { // 检查3到√n的奇数
if (n % i == 0) {
return false;
}
}
return true;
}

6、数字字符串转换为数字

String str = "3";
int number = str.charAt(0) - '0';

ASCII 码转换:字符在计算机中以 ASCII 码(或 Unicode 码)存储。

例如:

0 对应 ASCII 码 48

1 对应 49,依此类推至 ‘9’ 的 57

仅当字符是 0 ~ 9 时有效。

或使用Character.isDigit()方法

7、将小写字母转换成大写字母

private char toUpperCase(char first) {
return (char) (first - 'a' + 'A');
}

ASCII 码差值:

小写字母 az 的 ASCII码为97 ~ 122

大写字母 AZ 的 ASCII码为65 ~ 90

小写字母与大写字母的 固定差值为32(例如:'a' - 'A' = 32)。

或使用Character.toUpperCase(ch)方法